问题是:
我看到的解决方法是:
def compareStrings(self, A, B):
if len(B) == 0:
return True
if len(A) == 0:
return False
trackTable = [0 for _ in range(26)]
for i in A:
trackTable[ord(i) - 65] += 1
for i in B:
if trackTable[ord(i) - 65] == 0:
return False
else:
trackTable[ord(i) -65] -= 1
return True
我不明白:
1)为什么在开头的列表中给出26'0'?
2)trackTable [ord(i)-65] + = 1有什么作用?
什么是ord(i)?
谢谢! 最小
答案 0 :(得分:0)
这无疑是一个有趣的解决方案(相当复杂)。它创建一个由26个元素组成的数组,以计算A中每个字母的出现次数,然后确保B中每个字母的计数都大于或等于A中的计数。
直接回答您的问题:
1)为什么在开头的列表中给出26个“ 0”?
我们从26个0的列表开始,每个字母A-Z一个。我们将在第一个for
循环中将其递增。
2)trackTable [ord(i)-65] + = 1是做什么的?
进行计数。假设输入只是大写字母A-Z,则ord('A')= 65和ord('Z')= 90。我们减去65可使该范围从0-25。
3)什么是ord(i)?
我建议在线搜索。 https://www.programiz.com/python-programming/methods/built-in/ord
“ ord()方法返回一个整数,该整数表示给定Unicode字符的Unicode代码点。”