本文准备讲解1个简单的算法编程问题, 这个算法编程问题来自LintCode平台。不了解.LintCode平台的读者可以阅读笔者文章(在线编程平台推荐-LeetCode)。问题的英文版本描述如下:
Compare Strings
Compare two strings A and B, determine whether A contains all of the characters in B.
The characters in string A and B are all Upper Case letters.
Notice
The characters of B in A are not necessary continuous or ordered.
Example
ForA = "ABCD",B = "ACD", return true.
ForA = "ABCD",B = "AABC", return false.
问题的中文版本描述:
比较字符串
比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是大写字母
注意事项
在 A 中出现的 B 字符串里的字符不需要是连续的或者顺序不变的。
样例
给出 A ="ABCD" B ="ACD",返回 true
给出 A ="ABCD" B ="AABC", 返回 false
因为英文语言和中文语言的不同,这里做出补充说明:确定A中是否包含B中所有的字符,确定A中的B含字符出现次数等于或多于B中对应字符出现次数。请读者参阅样例例子2。标准的算法:统计A 中每个字符出现的次数,统计B中每个字符出现的次数; 对应B中每个字符,A中出现该字符的次数需要足够多。该算法可用做 HashMap 统计计算处理的后备算法方案。
现在公布1种高效的算法方案,该方案对应 LintCode 平台表现更强。由于 LintCode 平台的算法检测比较简单,考虑 BIG DATA 状况较少;该问题各种算法方案需要更多的评测。