LintCode问题图解-9

本文准备讲解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 状况较少;该问题各种算法方案需要更多的评测。


高效的算法

推荐阅读更多精彩内容