给定两个字符串str1和str2,输出两个字符串的最长公共子串,如果最长公共子串为空,输出-1。
之前用c语言来实现这道题目的话,首先想到动态规划,但是需要一个字符一个字符的比较,有点麻烦,本次采用java语言来实现这个问题。
利用String的字符串中的contains方法来判断是否包含。代码如下啊所示:
public class NC127 { public static String LCS (String str1, String str2) { StringBuilder sb=new StringBuilder(); int start=0; int end=1; while (end<str1.length()+1){ if (str2.contains(str1.substring(start,end))){ if (sb.length()<end-start) { sb.delete(0,sb.length()); sb.append(str1.substring(start,end)); } end++; }else { start++; } } if (sb.length()==0){ return "-1"; } return sb.toString(); } public static void main(String[] args){ String lcs = LCS("1AB2345CD", "12345EF"); System.out.println(lcs); }
}