3 回答
TA贡献1795条经验 获得超7个赞
查找两个 Java 字符串是否包含 2 个必须彼此相邻的公共字符。
可能有很多边缘情况,但这是一种方法(可能不是最快的,但可以根据您的需要工作)。
分别迭代两个字符串并
HashSets
为所有 2 字符对创建两个字符串。例如,
foobar
-->fo
,oo
,ob
,ba
,ar
只需取上面创建的交集,
HashSets
看看是否有任何公共对。
第二个问题很难理解。也许尝试包含一个示例以使其更清楚。
TA贡献1794条经验 获得超8个赞
通过迭代 2 个字符串中最短的每个相邻对:
static boolean contain2CommonChars(String s1, String s2) {
int l1 = s1.length();
int l2 = s2.length();
if ((l1 < 2) || (l2 < 2))
return false;
if (l2 < l1) {
String temp = s1;
s1 = s2;
s2 = temp;
}
for (int i = 0; i < s1.length() - 1; i++){
String pair = s1.substring(i, i + 2);
if (s2.contains(pair))
return true;
}
return false;
}
public static void main(String[] args) {
String s1 = "abcghj";
String s2 = "shhcgop";
System.out.println(s1 + " and " + s2 + " " + contain2CommonChars(s1, s2));
String s3 = "abcghjlo";
String s4 = "shhcop";
System.out.println(s3 + " and " + s4 + " " + contain2CommonChars(s3, s4));
}
印刷
abcghj and shhcgop true
abcghjlo and shhcop false
TA贡献1921条经验 获得超9个赞
只回答第一个问题。
如果您有可能对字符串进行预处理,则为每个字符串生成所有字符对并逐渐对它们进行排序。
contain2CommonChars -> 2C ai ar Ch co Co ha in mm mo n2 nC nt om on on rs ta
现在两个字符串之间的公共对可以通过一次最多为 O(L) 的类似合并的传递找到。
添加回答
举报