我目前正在尝试解决字符串是否平衡的问题(检查字符串是否具有相同数量的唯一字符,例如“ab”的“a”和“b”数量相等,因此它将返回“是”,而“cdc”的“c”比“d”多1个,因此它将返回“否”),我想到了一个需要交替变量的解决方案
例如,在下面的代码中:
def balanced(string):
string_list = [x for x in string]
number_of_letter1 = 0
for letter in string_list:
current_letter = letter
for number in range(len(string_list)):
if string_list[number] == current_letter:
number_of_letter1 += 1
string_list.pop(number)
if number_of_letter1 != number_of_letter2:
return "No"
number_of_letter2 = number_of_letter1.copy()
number_of_letter1 = 0
return "Yes"
我试图计算字符串中出现的每个字母的数字,将当前字母分配给当前字母。然后我会计算字母出现的次数,并将字母1的数量增加1。下一步就是问题所在:(.我想让字母2的数字是字母1的数字的副本,这样我就可以将(下一个循环中字母1的新数字)与(上一个循环中字母1的数字,即字母2的数字)进行比较)。但是,仅对于第一个循环,字母2的数字_不存在,因此创建赋值错误之前使用的变量
我认为可以通过在第一个循环中锁定字母1的数字,然后更改字母2的数字,将其与字母1的数字进行比较,然后在每个交替循环中反之亦然(如果可能的话)。如果没有,有没有办法修复上面的代码,使其与所提到的逻辑一起工作
我知道这个问题的另一个解决方案,包括保持字母1的数量不变,而字母2的数量不变,并反复比较字母2的数量与字母1的数量不变。然而,如果上述建议的解决方案有效,我认为它比后者更有效,所以我很好奇有很多方法可以避免这个错误
感谢大家花时间阅读!如果我对自己想法的任何解释都不那么清楚,我会尽力解释得更清楚
备选办法:
此代码在字符串中创建一组字符(唯一列表),并检查每个字符的出现次数
这将有助于:
collections.Counter
在一次迭代中收集所有字符的计数。然后测试有多少个不同的计数相关问题 更多 >
编程相关推荐