如何验证一个字符串中的每个字符都包含在另一个字符串中。 例如,abc是string1,cbade是string2,string1(a b c)中的所有字符都包含在string2中。 实际上它看起来很简单,但我们需要最快的方法来做到这一点,所以仍然非常努力,我整整一个星期都无法得到一个解决方案。
答案 0 :(得分:0)
如果您使用的语言可以轻松地为字符分配数值(大多数语言),您可以使用查找表进一步加快速度:
运行时:A + B
运行空间:A + B + N,其中N是可能的字符数。 (C:256,Java:65536)
如果不是,您应该能够在字符之间建立任意顺序,在这种情况下:
运行时:A * log(A)+ B * log(B)+ A * log(B)
运行空间:A + B
答案 1 :(得分:0)
将两个字符串中的所有字符分成两组,然后检查一个字符是另一个字符串的子集。在Python中:
>>> set("abc").issubset(set("cbade"))
True
答案 2 :(得分:0)
您可以在O(n)中执行此操作。首先构造第二个字符串中存在的字符的哈希表。然后迭代第一个字符串中的字符并断言该字符在哈希表中有一个条目。
答案 3 :(得分:0)
因为可能的字符数很小(假定为256),你可以有一个大小为256的固定数组,首先将它的每个位设置为零,然后当你访问第一个字符串中的任何字符时,在数组中设置相关的位,遍历第二个数组并且如果你看到没有要设置的位,意味着它们都在前一个字符串中,你可以说第二个字符串的所有字符都在第一个字符串中可用,否则,如果你在第二个字符串中看到一个字符字符串,如果尚未设置相关位,您可以说第一个字符串不包含第二个字符串。该算法的时间为O(n),内存为O(1)(即O(1)外部存储器)。
答案 4 :(得分:0)