[LintCode] 比较字符串

Posted immjc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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

 

以上是关于[LintCode] 比较字符串的主要内容,如果未能解决你的问题,请参考以下文章

LintCode 55. 比较字符串

比较 C# 中的字符串片段并从集合中删除项目

Lintcode55 Compare Strings solution 题解

lintcode_184.最大数

LintCode 7.Serialize and Deserialize Binary Tree(含测试代码)

比较有用的php代码片段