题解 | #查找两个字符串a,b中的最长公共子串#
查找两个字符串a,b中的最长公共子串
https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s11 = sc.nextLine(); String s22 = sc.nextLine(); //短字符串s11,长字符串s22 String s1 = s11.length() > s22.length() ? s22 : s11; String s2 = s11.length() > s22.length() ? s11 : s22; //公共字符串的长度n,初始值设为短字符串的长度 int n = s1.length(); //flag用以标记是否找到最长公共子串 boolean flag = false; //res存储找到的最长公共子串 String res = ""; while (!flag && n > 0) { for (int i = 0; i <= s1.length() - n; i++) { String s = s1.substring(i, i + n); //找到最长公共子串,将flag设为true,直接退出循环 if (s2.contains(s)) { res = s; flag = true; break; } } n--; } System.out.println(res); } }