提示
LintCode中的相关算法题实现代码,可以在我的GitHub中下载。
需求
描述
比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母
样例
给出 A = "ABCD"
B = "ACD"
,返回 true
给出 A = "ABCD"
B = "AABC"
, 返回 false
解题思路
题目给出的大写字母,所以有26个,我们可以创建一个26长度的数组,然后将A数组的内容Hash到数组中,然后在遍历B数组,出现一次就将次数减1,最后看是否有小于0的,如果有,那么A不包含B。
实现代码
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
if(B.size()==0) return true;
int a[26]={0};
for(int i=0;i<A.size();i++)
{
a[A[i]-'A']++;
}
for(int i=0;i<B.size();i++)
{
a[B[i]-'A']--;
}
for(int i=0;i<26;i++)
{
if(a[i]<0) return false;
}
return true;
}
};