[LintCode] 比较字符串

比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母

 注意事项
 在 A 中出现的 B 字符串里的字符不需要连续或者有序。

样例

给出 A = "ABCD" B = "ACD",返回 true

给出 A = "ABCD" B = "AABC", 返回 false

 

思路:B中字符可能重复,存在多个字符对应一个A中字符,这样就返回false。所以,使用map来统计A中字符出现的次数,然后遍历B中字符,如果在A中找到该字符,则另A中该字符出现次数减1,如果没有找到该字符直接返回false即可。参考代码如下:

class Solution {
public:
    /*
     * @param A: A string
     * @param B: A string
     * @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
        unordered_map<char, int> m;
        for (char c : A)
            m[c]++;
        for (int i = 0; i != B.size(); i++) {
            if (m[B[i]] > 0)
                m[B[i]]--;
            else
                return false;
        }
        return true;
    }
};
// 434 ms

 

posted @ 2017-10-13 20:08  immjc  阅读(206)  评论(0编辑  收藏  举报