public class Subsequence {
public static void main(String[] args){
//Scanner s = new Scanner(System.in);
String str1 = "wccefd";
String str2 = "adccefsd";
char a[] = str1.toCharArray();
char b[] = str2.toCharArray();
int maxlen = 0;
int startIndex=0;
int endIndex = 0;
for(int i=0;i<b.length;i++){
//对于b数组中的每一个数组,从第一个开始分别与a中的值比较
int nowstartIndex = i;
int nowendIndex = i;
int tempb = i;//定义序列相同时,b下标当前值,
如果直接使用i++,会造成下一个字符开始的遍历错误
int nowlen = 0;
boolean flag = false;
for(int j=0; j<a.length && tempb < b.length; j++){//临时值不能超过b长度
if(b[tempb] == a[j]){
nowendIndex = tempb;
nowlen = nowendIndex - nowstartIndex;
tempb++;
flag = true;
}else{
if(flag == true){//如果之前的相同,再遇到一个不相同的符,
后面的不用再比较
break;
}
}
}
if(nowlen > maxlen){
maxlen = nowlen;
startIndex = nowstartIndex;
endIndex = nowendIndex;
}
}
for(int k=startIndex;k<=endIndex;k++){
System.out.print(b[k]);
}
}
}
最长公共字符串
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 回文串的特点是,逆序输出和正序输出是一样的。所以这道题可以转化为:如果将此字符串逆序输出,那么两个字符串的最长公共...