сравните 2 строки, определите, содержит ли A все символы в B в python, используя список - PullRequest
0 голосов
/ 21 февраля 2019

вопрос такой:

Сравните две строки 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 do?
что такое ord (i)?

Спасибо!Min

1 Ответ

0 голосов
/ 21 февраля 2019

Это интересное решение наверняка (оно довольно запутанное).Он создает 26-элементный массив для подсчета вхождений каждой буквы в A, а затем проверяет, что число для каждой из этих букв в B больше или равно числу в A.

Для прямого ответаВаши вопросы:

1) Зачем ставить 26 '0' в начале списка?

Мы начинаем со списка 26 0, по одному на каждую букву AZ.Мы будем увеличивать это в первом цикле for.

2) что делает trackTable [ord (i) - 65] + = 1 делать?

Это делает подсчет.Если предположить, что введены только заглавные буквы AZ, то 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."

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...