Ransom Note - tanakakenji/Rinko GitHub Wiki
ใฏใใๆฟ็ฅใใใใพใใใไปฅไธใซๅ้กใฎๅ็ญใจ่งฃ่ชฌใ็คบใใพใใ
ๅ้ก:
2ใคใฎๆๅญๅ ransomNote
ใจ magazine
ใไธใใใใใจใใmagazine
ใฎๆๅญใไฝฟใฃใฆ ransomNote
ใๆง็ฏใงใใๅ ดๅใฏ true
ใใใใใงใชใๅ ดๅใฏ false
ใ่ฟใใฆใใ ใใใ
magazine
ใฎๅๆๅญใฏ ransomNote
ใงไธๅบฆใใไฝฟ็จใงใใพใใใ
ไพ:
Example 1:
Input: ransomNote = "a", magazine = "b"
Output: false
Example 2:
Input: ransomNote = "aa", magazine = "ab"
Output: false
Example 3:
Input: ransomNote = "aa", magazine = "aab"
Output: true
ๅถ็ด:
1 <= ransomNote.length, magazine.length <= 10^5
ransomNote ใจ magazine ใฏๅฐๆๅญใฎ่ฑๅญใงๆงๆใใใฆใใพใใ
ๅ็ญใจ่งฃ่ชฌ:
ใใฎๅ้กใงใฏใmagazine
ๆๅญๅใซๅซใพใใๆๅญใไฝฟใฃใฆ ransomNote
ๆๅญๅใๆง็ฏใงใใใใฉใใใๅคๅฎใใๅฟ
่ฆใใใใพใใ้่ฆใชใฎใฏใmagazine
ใฎๅๆๅญใฏไธๅบฆใใไฝฟ็จใงใใชใใจใใๅถ็ดใงใใ
ใใฎๅ้กใ่งฃๆฑบใใๅน็็ใชใขใใญใผใใฏใๅๆๅญใฎๅบ็พๅๆฐใใซใฆใณใใใใใจใงใใ
ใขใใญใผใ 1: ใใใทใฅใใใ (่พๆธ) ใไฝฟ็จใใ
-
magazine
ใฎๆๅญ้ ปๅบฆใใซใฆใณใใใ:magazine
ๆๅญๅใๅๅพฉๅฆ็ใใๅๆๅญใฎๅบ็พๅๆฐใใใใทใฅใใใ (ใพใใฏ่พๆธ) ใซๆ ผ็ดใใพใใใญใผใฏๆๅญใๅคใฏใใฎๅบ็พๅๆฐใงใใ
-
ransomNote
ใฎๆๅญใใใงใใฏใใ:ransomNote
ๆๅญๅใๅๅพฉๅฆ็ใใพใใransomNote
ใฎๅๆๅญใซใคใใฆใmagazine
ใฎ้ ปๅบฆใใใใซใใฎๆๅญใๅญๅจใใใใคๅบ็พๅๆฐใ 0 ใใๅคงใใใใ็ขบ่ชใใพใใ- ๆๅญใๅญๅจใใๅบ็พๅๆฐใๆญฃใฎๅ ดๅใใใฎๆๅญใ
ransomNote
ใงไฝฟ็จใใใใใ้ ปๅบฆใใใใใใใฎๆๅญใฎๅบ็พๅๆฐใ 1 ๆธใใใพใใ - ๆๅญใๅญๅจใใชใใใๅบ็พๅๆฐใ 0 ใฎๅ ดๅใ
ransomNote
ใๆง็ฏใงใใชใใใใfalse
ใ่ฟใใพใใ
- ๆๅญใๅญๅจใใๅบ็พๅๆฐใๆญฃใฎๅ ดๅใใใฎๆๅญใ
-
ๆๅ:
ransomNote
ใฎใในใฆใฎๆๅญใๅ้กใชใๅฆ็ใงใใๅ ดๅใransomNote
ใฏmagazine
ใใๆง็ฏๅฏ่ฝใงใใใใใtrue
ใ่ฟใใพใใ
Python ใงใฎๅฎ่ฃ ไพ:
from collections import Counter
def canConstruct(ransomNote: str, magazine: str) -> bool:
magazine_counts = Counter(magazine)
for char in ransomNote:
if magazine_counts[char] > 0:
magazine_counts[char] -= 1
else:
return False
return True
# ไพ
print(canConstruct("a", "b")) # Output: False
print(canConstruct("aa", "ab")) # Output: False
print(canConstruct("aa", "aab")) # Output: True
่งฃ่ชฌ:
Counter(magazine)
ใฏใmagazine
ๆๅญๅๅ ใฎๅๆๅญใฎๅบ็พๅๆฐใใซใฆใณใใใ่พๆธใฎใใใชใชใใธใงใฏใใไฝๆใใพใใransomNote
ใฎๅๆๅญใซใคใใฆใmagazine_counts
ใซใใฎๆๅญใๅญๅจใใใใคๅบ็พๅๆฐใ 0 ใใๅคงใใใใ็ขบ่ชใใฆใใพใใ- ๆกไปถใๆบใใๅ ดๅใ
magazine_counts[char] -= 1
ใงใใฎๆๅญใฎไฝฟ็จๅๆฐใๆธใใใพใใ - ใใ
magazine_counts[char]
ใ 0 ไปฅไธใฎๅ ดๅใใใฎๆๅญใฏmagazine
ใซไธ่ถณใใฆใใใใใใงใซไฝฟใๆใใใใฆใใใใใFalse
ใ่ฟใใพใใ - ใซใผใใๅฎไบใใใฐใ
ransomNote
ใฏmagazine
ใใๆง็ฏๅฏ่ฝใงใใใใใTrue
ใ่ฟใใพใใ
ใขใใญใผใ 2: ้ ๅใไฝฟ็จใใ (ๅฐๆๅญใฎ่ฑๅญ้ๅฎ)
ransomNote
ใจ magazine
ใๅฐๆๅญใฎ่ฑๅญใฎใฟใงๆงๆใใใฆใใใจใใๅถ็ดใๅฉ็จใใฆใ้
ๅใไฝฟใฃใฆๆๅญ้ ปๅบฆใ็ฎก็ใใใใจใใงใใพใใ
-
magazine
ใฎๆๅญ้ ปๅบฆใใซใฆใณใใใ:- ้ทใ 26 ใฎ้ ๅ (ใพใใฏใชในใ) ใ็จๆใใๅใคใณใใใฏในใใขใซใใกใใใใฎๅๆๅญใซๅฏพๅฟใใใพใ (ไพ: ใคใณใใใฏใน 0 ใฏ 'a'ใใคใณใใใฏใน 1 ใฏ 'b' ใชใฉ)ใ
magazine
ๆๅญๅใๅๅพฉๅฆ็ใใๅๆๅญใซๅฏพๅฟใใ้ ๅใฎใคใณใใใฏในใฎๅคใใคใณใฏใชใกใณใใใพใใ
-
ransomNote
ใฎๆๅญใใใงใใฏใใ:ransomNote
ๆๅญๅใๅๅพฉๅฆ็ใใพใใransomNote
ใฎๅๆๅญใซใคใใฆใๅฏพๅฟใใ้ ๅใฎใคใณใใใฏในใฎๅคใ 0 ใใๅคงใใใใ็ขบ่ชใใพใใ- ๅคใๆญฃใฎๅ ดๅใใใฎๆๅญใ
ransomNote
ใงไฝฟ็จใใใใใ้ ๅใฎๅคใ 1 ใใฏใชใกใณใใใพใใ - ๅคใ 0 ใฎๅ ดๅใ
ransomNote
ใๆง็ฏใงใใชใใใใfalse
ใ่ฟใใพใใ
- ๅคใๆญฃใฎๅ ดๅใใใฎๆๅญใ
-
ๆๅ:
ransomNote
ใฎใในใฆใฎๆๅญใๅ้กใชใๅฆ็ใงใใๅ ดๅใransomNote
ใฏmagazine
ใใๆง็ฏๅฏ่ฝใงใใใใใtrue
ใ่ฟใใพใใ
Python ใงใฎๅฎ่ฃ ไพ (้ ๅใไฝฟ็จ):
def canConstruct_array(ransomNote: str, magazine: str) -> bool:
alphabet = [0] * 26
for char in magazine:
alphabet[ord(char) - ord('a')] += 1
for char in ransomNote:
index = ord(char) - ord('a')
if alphabet[index] > 0:
alphabet[index] -= 1
else:
return False
return True
# ไพ
print(canConstruct_array("a", "b")) # Output: False
print(canConstruct_array("aa", "ab")) # Output: False
print(canConstruct_array("aa", "aab")) # Output: True
ๆ้่จ็ฎ้:
- ใฉใกใใฎใขใใญใผใใใ
magazine
ใจransomNote
ใฎๆๅญๅใใใใใไธๅบฆๅๅพฉๅฆ็ใใใใใๆ้่จ็ฎ้ใฏ O(m + n) ใงใใใใใงใm ใฏmagazine
ใฎ้ทใใn ใฏransomNote
ใฎ้ทใใงใใ
็ฉบ้่จ็ฎ้:
- ใใใทใฅใใใใไฝฟ็จใใใขใใญใผใใงใฏใๆๆชใฎๅ ดๅใ
magazine
ใซๅซใพใใใในใฆใฎใฆใใผใฏใชๆๅญใๆ ผ็ดใใใใใ็ฉบ้่จ็ฎ้ใฏ O(k) ใงใใใใใงใk ใฏmagazine
ๅ ใฎใฆใใผใฏใชๆๅญใฎๆฐใงใใ - ้ ๅใไฝฟ็จใใใขใใญใผใใงใฏใๅธธใซๅบๅฎใตใคใบใฎ้ ๅ (้ทใ 26) ใไฝฟ็จใใใใใ็ฉบ้่จ็ฎ้ใฏ O(1) ใงใใ
็ต่ซ:
ใฉใกใใฎใขใใญใผใใๅน็็ใงใใใ้ ๅใไฝฟ็จใใใขใใญใผใใฏใๅ้กใฎๅถ็ด (ๅฐๆๅญใฎ่ฑๅญใฎใฟ) ใๅฉ็จใใใใจใงใใใใใซ็ฉบ้ๅน็ใ่ฏใใชใใพใใใใใทใฅใใใใไฝฟ็จใใใขใใญใผใใฏใใใไธ่ฌ็ใชๆๅญใปใใใซๅฏพๅฟใงใใพใใ