题解 | #查找两个字符串a,b中的最长公共子串#
查找两个字符串a,b中的最长公共子串
https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { test65(); } private static void test65() { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 // 注意 while 处理多个 case while (in.hasNext()) { String a = in.nextLine(); String b = in.nextLine(); int n = Math.min(a.length(), b.length()); String aa = a.length() == n ? a : b; String bb = a.length() != n ? a : b; int[] db = new int[n]; for (int i = 0; i <= n - 1; i++) { db[i] = 0; for (int j = 0; j <= i; j++) { if (bb.contains(aa.substring(j, i + 1))) { db[i] = Math.max(db[i], aa.substring(j, i + 1).length()); } } } int v = 0; for (int j : db) { v = Math.max(v, j); } for (int i = 0; i < db.length; i++) { if (db[i] == v) { System.out.println(aa.substring(i + 1 - v, i + 1)); break; } } } } }