比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母
样例
给出 A = "ABCD" B = "ACD",返回 true
给出 A = "ABCD" B = "AABC", 返回 false
注意在 A 中出现的 B 字符串里的字符不需要连续或者有序。
class Solution {
public:
/**
* @param A: A string includes Upper Case letters
* @param B: A string includes Upper Case letter
* @return: if string A contains all of the characters in B return true
* else return false
*/
bool compareStrings(string A, string B) {
// write your code here
if(B.size()>A.size())
return false;
/*map<char,int> map_A,map_B;
for(int i=0;i<A.size();i++){
map_A[A[i]]++;
}
for(int i=0;i<B.size();i++){
map_B[B[i]]++;
}
map<char,int>::iterator it=map_B.begin();
while(it!=map_B.end()){
int cnt=map_A.count(it->first);
if(cnt<it->second)
return false;
}
return true;
*/
//上面的程序超时
int letters[26];
memset(letters,0,sizeof(letters));
for(int i=0;i<A.size();i++){
letters[A[i]-'A']++;
}
for(int i=0;i<B.size();i++){
if(letters[B[i]-'A']<=0)
return false;
else{
letters[B[i]-'A']--;
}
}
return true;
}
};