383.赎金信
为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思。
给你一个赎金信 (ransomNote
) 字符串和一个杂志(magazine
)字符串,判断 ransomNote
能不能由 magazines
里面的字符构成。
如果可以构成,返回 true
;否则返回 false
。
magazine
中的每个字符只能在 ransomNote
中使用一次。
示例 1:
1 2
| 输入:ransomNote = "a", magazine = "b" 输出:false
|
小写字母的词频统计
Solution:
只要统计字符串magazine
中每个英文字母的频率,都大于等于reansomNote
的频率,就可以成立
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| 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; } }
|
Solution1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class Solution { public boolean canConstruct(String ransomNote, String magazine) { String[] arr = ransomNote.split(""); for(int i=0;i<ransomNote.length();i++){ if(magazine.contains(arr[i])){ magazine=magazine.replaceFirst(arr[i],"1"); }else{ return false; } } return true;
} }
|