Q:
比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母
样例
给出 A = “ABCD” B = “ACD”,返回 true
给出 A = “ABCD” B = “AABC”, 返回 false
注意
在 A 中出现的 B 字符串里的字符不需要连续或者有序
A:
简单就不多说。
class Solution {
public:
/**
* @param A: A string includes Upper Case letters
* @param B: A string includes Upper Case letter
* @return: if string A contains all of the characters in B return true
* else return false
*/
bool compareStrings(string A, string B) {
typedef unsigned char uint8;
typedef unsigned int uint32;
uint32 a_length = A.length();
uint32 b_length = B.length();
if (a_length < b_length) {
return false;
}
static const int COUNT = 256;
int counts[COUNT];
::memset(counts, 0x0, COUNT*sizeof(int));
for (uint32 i = 0; i < a_length; ++i) {
counts[uint8(A[i])]++;
}
for (uint32 i = 0; i < b_length; ++i) {
uint8 ch = B[i];
if (!counts[ch])
return false;
counts[ch]--;
}
return true;
}
};