题解 | #查找两个字符串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) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case String str1 = in.nextLine(); String str2 = in.nextLine(); String str = null; if(str1.length() > str2.length()){ str = calc(str2 ,str1); }else{ str = calc(str1 ,str2); } System.out.println(str); } } public static String calc(String shorter ,String longer){ if(shorter.equals(longer)){ return shorter; } //最大的长度 int maxLen = 0; //最长的字符串 String str = ""; //按住左边的字符,右手疯狂滑动,左手从左往右一个个试 for(int i=0; i<shorter.length() - 1;i++){ for(int j = shorter.length(); j >=i; j--){ String sub = shorter.substring(i ,j); if(sub.length() > maxLen && longer.contains(sub)){ maxLen = sub.length(); str = sub; } } } return str; } }