从两个字符串(str_1,str_2)中找出最大公共子字符串(comString)的方法为:
- 选取长度较短的字符串(假设str_1较短)做截取;
- 从字符串中截取长度为1的子字符串;
- 每个子字符串都在str_2中做查询,查询到则将该字符串赋予comString;
- 从字符串中截取长度为2的子字符串,重复3;
- 从字符串中截取长度为n的子字符串,重复3;
- 结束。
截取字符串例子:
实例:
[Java]
/**
* 题目:求两个字符串的最大公共子字符串
* 思路:将短的字符串从短到长做字符串截取,截取结果与另一个字符串做查询,如果查询到,默认为公共字符串。
*/
package com.company;
public class Main{
public static void main(String[] args) {
String str_1="abcdefghijk";
String str_2="abcdfghabcdef";
commonString(str_1,str_2);
}
public static void commonString(String str_1,String str_2) {
String comString=""; //用于存放公共字符串
String childString=""; //存放拆分得到的子字符串
String minString=str_1.length<str_2.length?str_1:str_2;
//选取短的字符串做拆分
//System.out.println(minString);
for(int i=1;i<=minString.length;i++){
for(int j=0;j<minString.length;j++) {
if(j+i<=minString.length) {
childString = minString.substring(j, j + i);
if (str_2.indexOf(childString) != -1)
//如果不等于-1,则表示在str_2里面找到childString
comString = childString;
}
}
System.out.println(comString);
}
}
}