[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] 比较字符串的主要内容,如果未能解决你的问题,请参考以下文章
Lintcode55 Compare Strings solution 题解