最近美图网校园招聘当中的一道题,求两字符串的最大公共字符串长度,本人写的JAVA代码实现如下:
public class MaxConString {
/**
* 计算两字符串最大公共字符串长度
*/
public static void main(String[] args) {
char[] s1 = "jiajiangayaoyao".toCharArray(); //测试数据
char[] s2 = "jiangyaoyao".toCharArray();
int c = new MaxConString().getCount(s1, s2);
System.out.println("两字符串的共同字符串长度为:"+c);
}
private int getSubCount(char[] s1,char[] s2, int i ,int j){//计算两字符串从s1的第i位置s2的第j位置的之后字符串长度
//如“abc”和“ab”则返回conut为2
int count=1;
while(++i<s1.length&&++j<s2.length&&s1[i]==s2[j]){
count++;
}
return count;
}
private int getCount(char[]s1,char[]s2){ //计算两字符串的共同字符串长度
int count = 0;
for(int i=0;i<s1.length;i++)
for(int j=0;j<s2.length;j++)
if(s1[i]==s2[j]){
if(this.getSubCount(s1, s2, i, j)>count)
count = this.getSubCount(s1, s2, i, j);
}
return count;
}
}
测试结果:两字符串的共同字符串长度为:6