查找 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中的每个字符H
A
T
S
是否存在于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
}
}
我正在寻找更快的解决方案来解决这个问题。
有一个线性时间算法。
- 将您的
stringA
转换为具有 O(1) 成员资格测试的哈希字符集。
- 遍历
stringB
中的每个字符。
- 如果其中一个字符不在您的哈希集中,则测试失败。
- 如果没有失败,则测试成功。
鉴于 2 个字符串:
String stringA = "WHATSUP";
String stringB = "HATS";
我想知道stringB中的每个字符H
A
T
S
是否存在于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
}
}
我正在寻找更快的解决方案来解决这个问题。
有一个线性时间算法。
- 将您的
stringA
转换为具有 O(1) 成员资格测试的哈希字符集。 - 遍历
stringB
中的每个字符。 - 如果其中一个字符不在您的哈希集中,则测试失败。
- 如果没有失败,则测试成功。