java实现求两个字符串的最长公共子字符串
来源:互联网 发布:淘宝公众号 编辑:程序博客网 时间:2024/05/21 11:20
我的思想是遍历两个字符串,使用临时的stringbuffer存储查找过程中找到的子字符串,然后保存起来,一轮查找完成后,就和上次的保存的子字符串的长度进行比较,如果长,就更新保存的临时stringbuffer。此题要非常注意字符串的下标越界的情况发生。
package 求两个字符串之间的最长公共子串;
public class Test3 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
String s1="adsjfjkhjfeefe";
//s1="shaohui";
String s2="huioiuyjifeefedwi";
//s2="ahui";
if(s1.length()<s2.length()){//前一个字符串长度小于后一个的情况,则交换
String s=s1;
s1=s2;
s2=s;
}
String s=fun(s1,s2);
System.out.println(s);
}
private static String fun(String s1, String s2) {
// TODO 自动生成的方法存根
if(s1==null||s2==null)
return null;
if(s1.length()==0||s2.length()==0)
return null;
int i,j,k=0;
StringBuffer sb=new StringBuffer();
StringBuffer sbTemp=new StringBuffer();
int max=0;
for(i=0;i<s1.length();i++)
for(j=0;j<s2.length();j++){
while(s1.charAt(i+k)==s2.charAt(j+k)){//此处注意下标越界
sbTemp.append(s1.charAt(i+k));
if(i+k<s1.length()-1&&j+k<s2.length()-1){//此处注意下标越界
k++;
}
else
{
break;
}
}
if(max<sbTemp.length()){
max=sbTemp.length();
sb.delete(0, sb.length());//sb清空
sb.append(sbTemp.toString());
}
k=0;
sbTemp.delete(0, sbTemp.length());//sbTemp重新清空
}
return sb.toString();
}
}
- java实现求两个字符串的最长公共子字符串
- python实现求两个字符串的最长公共子串
- 求两个字符串的最长公共子串 python实现
- 求两个字符串的最长公共子串——Java实现
- 求两个字符串的最长公共子序列——Java实现
- 求两个字符串最长公共子串
- java求两个字符串最长公共字符串
- 求两个字符串的最长的连续公共子串
- 求两个字符串的最长的连续公共子串
- 求两个字符串的最长的连续公共子串
- 求两个字符串的最长的连续公共子串
- 求两个字符串的最长公共子串的长度
- 求两个字符串的最长公共子序列的数量
- 求两个字符串的最长公共子串的长度
- VB6求两个字符串最长公共子串的问题
- 求两个字符串的最长公共子串(LCS)
- 求两个字符串的最长公共子串
- 求两个字符串的最长公共子串
- 三天上手PHP之6:字符串变量
- 构造函数
- effective C++之子类虚函数调用基类函数
- 线性表的链式存储结构---单链表
- java中this和super的总结
- java实现求两个字符串的最长公共子字符串
- 每天一个算法之树镜像
- 小试Python + selenuim 自动处理 Remedy
- BZOJ 4034: [HAOI2015]T2(树链剖分,点权,线段树)
- 非常不错的php加密和php解密函数
- Listview
- 多进程编程中fork
- UVA 1161&& UVALive 3645 Objective: Berlin (最大流 -- 时序模型)
- Apriori关联算法