给你两个字符串:ransomNote
和 magazine
,判断 ransomNote
能不能由 magazine
里面的字符构成。
如果可以,返回 true
;否则返回 false
。
magazine
中的每个字符只能在 ransomNote
中使用一次。
示例 1:
输入:ransomNote = "a", magazine = "b" 输出:false
示例 2:
输入:ransomNote = "aa", magazine = "ab" 输出:false
示例 3:
输入:ransomNote = "aa", magazine = "aab" 输出:true
c++版
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
int r[1000]={0},m[1000]={0}; //这里要定义全部都为 0 初始化
for(int i=0;i<ransomNote.length();i++){
r[ransomNote[i]-'a']++;
}
for(int i=0;i<magazine.length();i++){
m[magazine[i]-'a']++;
}
int k=ransomNote.length();
for(int i=0;i<k;i++){
if(m[ransomNote[i]-'a']>0){
m[ransomNote[i]-'a']--;
}
else return false;
}
return true;
}
};
Java版
class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
int[] r = new int[26];
int[] m = new int[26];
for (int i = 0; i < ransomNote.length(); i++) {
r[ransomNote.charAt(i) - 'a']++;
}
for (int i = 0; i < magazine.length(); i++) {
m[magazine.charAt(i) - 'a']++;
}
for (int i = 0; i < ransomNote.length(); i++) {
if (m[ransomNote.charAt(i) - 'a'] > 0) {
m[ransomNote.charAt(i) - 'a']--;
} else {
return false;
}
}
return true;
}
}