获取两个字符串中最大相同子串
思路
- 找到最大的相同子串是一个不断增加子串长度的过程
- 我们可以先从一个字符开始找,然后慢慢增加
- 找到最长的那个字符串就是最大相同子串
- 可以用String类中的subString方法和contain方法相结合
- 用两个for循环语句来遍历字符串,j - i获取长度,str获取字符串
代码
package com.jarno.javanna;
/**
* 获取两个字符串中最大相同子串。比如:
* str1 = "wodemingzishijojowodemengxiangshiyoungerstar"
* str2 = "jojoshiyoungerstar"
*/
public class StringTest3 {
public static void main(String[] args) {
String s1 = "wodemingzishijojowodemengxiangshiyoungerstar";
String s2 = "jojoshiyoungerstar";
System.out.println("长字符串:" + s1 + "\n短字符串:" + s2 + "\n" + StringTest3.getSame(s1,s2));
}
//用两个for循环语句来遍历数组,j-i获取长度,str获取字符串
public static String getSame(String longStr,String shortStr){
char[] shortChars = shortStr.toCharArray();
int wLength = 0;
String wStr = null;
String testStr = null;
for (int i = 0; i < shortChars.length; i++){
for (int j = i+1; j < shortChars.length+1; j++){
testStr = shortStr.substring(i, j);
if (longStr.contains(shortStr.substring(i, j))){
if (wLength < j - i){
wLength = j - i;
wStr = shortStr.substring(i, j);
}
}
else {
break;
}
}
}
return wStr;
}
}
实现