zoukankan      html  css  js  c++  java
  • [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
  • 相关阅读:
    Bzoj 3907: 网格
    [***]HZOJ 哪一天她能重回我身边
    HZOJ 那一天她离我而去
    HZOJ 那一天我们许下约定
    卡特兰数表
    组合数表
    [***]HZOJ 超级树
    HZOJ 砍树
    HZOJ 星际旅行
    「BZOJ2510」弱题
  • 原文地址:https://www.cnblogs.com/immjc/p/7663018.html
Copyright © 2011-2022 走看看