Lintcode(2)-比较字符串
2015-06-16 14:53
411 查看
Q:
比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母
样例
给出 A = “ABCD” B = “ACD”,返回 true
给出 A = “ABCD” B = “AABC”, 返回 false
注意
在 A 中出现的 B 字符串里的字符不需要连续或者有序
A:
简单就不多说。
比较两个字符串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; } };