比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母
样例
给出 A = “ABCD” B = “ACD”,返回 true
给出 A = “ABCD” B = “AABC”, 返回 false
注意
在 A 中出现的 B 字符串里的字符不需要连续或者有序。
思路:
这个问题初看起来并没有什么思路,但是仔细想想还是比较简单的;
我们可以建立两个map
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
auto mapA = buildMap(A);
auto mapB = buildMap(B);
for(const auto &iter : mapB) {
if(mapA[iter.first] < mapB[iter.first])
return false;
}
return true;
}
private:
map<char, int> buildMap(string str) {
map<char, int> res;
for(const auto &c : str)
++res[c];
return res;
}
};