题解 | #查找两个字符串a,b中的最长公共子串#
查找两个字符串a,b中的最长公共子串
https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506
滑动窗口典例
import java.io.IOException;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
String word1 = scanner.nextLine();
String word2 = scanner.nextLine();
if (word1.length() < word2.length()) {
String temp = word1;
word1 = word2;
word2 = temp;
}
int start = 0;
int end = 1;
String maxLengthChild = null;
while (end <= word2.length()) {
String child = word2.substring(start, end);
if (word1.contains(child)) {
if (maxLengthChild == null || child.length() > maxLengthChild.length()) {
maxLengthChild = child;
}
} else {
//如果已经找到重复子串,当前end - start已经是最长重复子串的长度,
//因此当当前窗口不匹配的时候,start指针和end指针都往后移一位,使得窗口长度不变,继续尝试下一个一样长度的重复子串
start++;
}
//当当前窗口匹配到重复子串时,只有end往后移一位,使得窗口长度加1,尝试匹配更长的字符串
end++;
}
System.out.println(maxLengthChild);
}
}
顺丰集团工作强度 382人发布