我正在尝试解决上述面试问题,以检查字符串是否是彼此的换位符。具体实施如下:
NO_OF_CHARS = 256
def areAnagram(str1, str2):
count = [0] * NO_OF_CHARS
i = 0
while (i in str1) and (i in str2):
count[ord(i)]+=1
i += 1
if len(str1) != len(str2):
return 0
for i in xrange(NO_OF_CHARS):
if count[i]:
return 0
return 1
str1 = "geeksforgeeks"
str2 = "forgeeksgeeks"
if areAnagram(str1, str2):
print "The two strings are anagram of each other"
else:
print "The two strings are not anagram of each other"
运行代码时出现以下错误:
^{pr2}$我是不是在while循环中出错了?另外,如何避免使用I=0语句?谢谢。在
如果要对字符进行计数,则需要对两个字符串进行计数并进行比较
为了提高效率和清晰度,我将检查字符串长度移到方法的开头
编辑:根据Blckknght的评论更新了我的答案
在Python中执行此操作的规范方法是使用
collections.Counter
:这应该占用})。但是请注意,尽管这段代码的渐近性能更好,但是对于短字符串来说,它可能仍然比使用
O(N)
空间和时间(其中N
是{sorted
的版本慢。Python的sort
代码非常快!在如果您可能要使用该函数来比较非常不同的字符串,则可以在计数前使用特殊情况检查字符串长度:
^{pr2}$查看字符串是否由相同字符组成的简单方法是将它们作为排序列表进行比较:
相关问题 更多 >
编程相关推荐