Python 실습 22: 랜섬노트
의문
ransomNote
및 magazine
두 개의 문자열이 주어지면,true
if
ransomNote
_구성 가능magazine
및 false
문자를 사용합니다. magazine
의 각 문자는 ransomNote
에서 한 번만 사용할 수 있습니다. 예시
입력: ransomNote = "a", 잡지 = "b"
출력: 거짓
입력: ransomNote = "aa", 잡지 = "ab"
출력: 거짓
입력: ransomNote = "aa", 잡지 = "aab"
출력: 참
1 <= ransomNote.length, magazine.length <= 105
ransomNote
및 magazine
영문 소문자로 구성됩니다. 내 솔루션
>>determine if ransomNote can be constructed from magzine
set lengthr to length of ransomNote
set lengthm to length of magzine
if lengthr>lengthm:
return false
else:
for each char in ransomnote:
if char appear in magazine:
remove char in ransomenote
remove char in magazine
if lengthr equal to 0:
return True
else:
return False
핵심
class Solution:
def canConstruct(self,ransomNote: str, magazine: str) -> bool:
lenngthr = len(ransomNote)
lenngthm = len(magazine)
if lenngthr>lenngthm:
return False
# lenngthr<=lenngthm
else:
for char in ransomNote:
if char in magazine:
# remove that char from both string
magazine=magazine.replace(char,"",1)
ransomNote=ransomNote.replace(char,"",1)
# This mean the whole string can be found on magzine
if len(ransomNote) == 0:
return True
# if ransomNote has not reduce to an empty string
else:
return False
기타 솔루션
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
magazine_dict = {}
# constuct a dict with uniques as key and its occurance as value
for char in magazine:
if char not in magazine_dict:
magazine_dict[char] = 1
else:
magazine_dict[char] += 1
for char in ransomNote:
if char not in magazine_dict or magazine_dict[char] == 0:
return False
else:
magazine_dict[char] -= 1
# all char checked to be found on magazine_dict
return True
내 반성
신용 거래
챌린지 찾기leet code 383
Reference
이 문제에 관하여(Python 실습 22: 랜섬노트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mathewchan/python-exercise-22-ransomnote-4meh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)