题目:383. 赎金信
思路:哈希表,时间复杂度0(n)。
C++版本:
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
if(ransomNote.size()>magazine.size()) return false;
unordered_map<char,int> mp;
for(auto x:magazine){
mp[x]++;
}
for(auto x:ransomNote){
mp[x]--;
if(mp[x]<0) return false;
}
return true;
}
};
JAVA版本:
class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
if(ransomNote.length()>magazine.length()) return false;
int[] mp=new int[30];
for(var x:magazine.toCharArray()){
mp[x-'a']++;
}
for(var x:ransomNote.toCharArray()){
mp[x-'a']--;
if(mp[x-'a']<0) return false;
}
return true;
}
}
GO版本:
func canConstruct(ransomNote string, magazine string) bool {
if len(ransomNote)>len(magazine) {
return false
}
mp:=make([]int,30)
for _,x:=range magazine {
mp[int(x-'a')]++
}
for _,x:=range ransomNote {
mp[int(x-'a')]--
if mp[int(x-'a')]<0 {
return false
}
}
return true
}