【问题标题】:compare 2 strings, determine whether A contains all of the characters in B in python using list比较2个字符串,在python中使用list判断A是否包含B中的所有字符
【发布时间】:2019-02-21 01:14:43
【问题描述】:

问题是:

比较两个字符串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) 是什么?

谢谢! 最小

【问题讨论】:

    标签: string list data-structures


    【解决方案1】:

    这无疑是一个有趣的解决方案(非常复杂)。它创建一个 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 代码点。”

    【讨论】:

      猜你喜欢
      • 2014-07-28
      • 1970-01-01
      • 2022-11-27
      • 2020-08-26
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 2021-02-07
      相关资源
      最近更新 更多