【发布时间】:2021-06-14 20:33:58
【问题描述】:
我正在尝试编写执行以下操作的代码:
-
将多个字符串作为输入
-
将每个字符串分成两个等长的连续子字符串
-
返回要改变的最小字符数,以使两个子字符串成为彼此的字谜(如果不可能,则必须返回 -1)。
示例输入
6
aaabbb
ab
abc
mnop
xyyx
xaxbbbxx
样本输出
3
1
-1
2
0
1
有关问题的更详细说明,请查看this 链接(无需登录或注册)。
我已经很好地接近了解决方案,但似乎我没有做对,我的输出通常比预期的要大或小,而且我真的不知道是什么导致了问题。这是我的代码:
n = int(input())
user_input = []
for k in range(n):
user_input.append(input())
results = []
for i in user_input:
if len(list(i))%2 == 0:
left = i[:len(list(i))//2]
right = i[len(list(i))//2:]
left_dict = dict((letter,left.count(letter)) for letter in set(left))
right_dict = dict((letter,right.count(letter)) for letter in set(right))
if left_dict == right_dict:
results.append(0)
else:
shared_items = {k: left_dict[k] for k in left_dict if k in right_dict and left_dict[k] == right_dict[k]}
results.append(len(left) - len(shared_items))
else:
results.append(-1)
print(results)
感谢您提前提供的任何帮助。
【问题讨论】:
标签: python python-3.x list dictionary anagram