Для двух строк 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
Код: Выделить всё
ransomNote = "abb"
magazine = "ab"
Я знаю, что этот код не оптимизирован; Я просто ищу способ исправить то, чего мне здесь не хватает, и успешно пройти все тестовые случаи.
Подробнее здесь: https://stackoverflow.com/questions/787 ... ransomnote