Что не так в моем решении для записки о выкупе LeetcodePython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Что не так в моем решении для записки о выкупе Leetcode

Сообщение Anonymous »

Я работаю над проблемой Leetcode 383. Примечание о выкупе:

Для двух строк ransomNote и Magazine вернуть true if Примечание о выкупе можно составить, используя буквы журнала и false иначе.
Каждое письмо в журнале можно использовать только один раз в заметке о выкупе.

Мой код проходит 98 из 128 тестовых случаев. Я создал два словаря со счетчиками каждого вхождения и написал код для сравнения этих двух счетчиков.
Вот что у меня есть:

Код: Выделить всё

class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
ransomdict = {}
magadict = {}

for i in ransomNote:
if i in ransomdict:
ransomdict[i] +=1
else:
ransomdict[i] = 1

for j in magazine:
if j in magadict:
magadict[j] +=1
else:
magadict[j] = 1

print(ransomdict)
print(magadict)

for k in ransomdict:
if k in magadict:
if magadict[k] >= ransomdict[k]:
return True
else:
return False
Следующий тестовый пример должен возвращать False, но он возвращает True:

Код: Выделить всё

ransomNote = "abb"
magazine = "ab"
Для отладки я напечатал ransomdict и magadict, и очевидно, что подсчеты верны. В чем моя ошибка?
Я знаю, что этот код не оптимизирован; Я просто ищу способ исправить то, чего мне здесь не хватает, и успешно пройти все тестовые случаи.

Подробнее здесь: https://stackoverflow.com/questions/787 ... ransomnote
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»