查找 1 个字符串中的每个字符是否存在于另一个字符串中,比 O(n^2) 更快

Find whether each character in 1 string is exist in another string, faster than O(n^2)

鉴于 2 个字符串:

String stringA = "WHATSUP";
String stringB = "HATS";

我想知道stringB中的每个字符HATS是否存在于stringA

在初级方法中,该过程可以在嵌套的 for 循环中完成,其计算复杂度为 O(n^2)。

for(int i = 0; i < stringA.length(); i++){
    for(int j = 0; j < stringB.length(); j++){
        if(stringA.charAt(i) == stringB.charAt(j))
            //do something
    }
}

我正在寻找更快的解决方案来解决这个问题。

有一个线性时间算法。

  1. 将您的 stringA 转换为具有 O(1) 成员资格测试的哈希字符集。
  2. 遍历 stringB 中的每个字符。
  3. 如果其中一个字符不在您的哈希集中,则测试失败。
  4. 如果没有失败,则测试成功。