首页 > 其他 > 详细

[LintCode] 比较字符串

时间:2017-10-13 20:51:10      阅读:340      评论:0      收藏:0      [点我收藏+]

比较两个字符串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

 

[LintCode] 比较字符串

原文:http://www.cnblogs.com/immjc/p/7663018.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!