比较2个字符串,使用列表确定A是否包含python中B中的所有字符

时间:2019-02-21 01:14:44

标签: string list data-structures

问题是:

比较两个字符串A和B,确定A是否包含B中的所有字符。

字符串A和B中的字符都是大写字母。

我看到的解决方法是:

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)?

谢谢! 最小

1 个答案:

答案 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代码点。”