赎金信
383.赎金信
题目描述
思路
字符统计
依据题意要求,使用magazine中的字符构建新的字符串ransomNote,且ransomNote中的每个字符只能使用一次,只需要满足字符串中每个英文字母的统计次数都大于等于randomNote中相同字母的统计次数即可。
Python实现
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
if len(ransomNote) > len(magazine):
return False
return not collections.Counter(ransomNote) - collections.Counter(magazine)
Java实现
class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
if (ransomNote.length() > magazine.length()) {
return false;
}
int[] cnt = new int[26];
for (char c: magazine.toCharArray()) {
cnt[c - 'a']++;
}
for (char c:ransomNote.toCharArray()) {
cnt[c - 'a']--;
if (cnt[c - 'a'] < 0) {
return false;
}
}
return true;
}
}