您的位置:程序门 -> java -> j2ee / ejb / jms



java的中字符串的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


java的中字符串的问题[已结贴,结贴人:fhqfhvso]
发表于:2007-08-11 14:18:48 楼主
有两个长度未知的字符串,求它们最长的字符相同的子串并返回这个子串
例如:
s1= "abcdefgh ";
s2= "ffadsfasdfbc "
其中的bc就是最长的字符相同的子串。
希望大家给我个代码,谢谢了~~~
发表于:2007-08-11 19:57:451楼 得分:0
希望大侠给我一个答案
发表于:2007-08-12 19:02:252楼 得分:0
有人给我个答案么?
发表于:2007-08-12 21:39:103楼 得分:0
这个实际上是较为简单的字符串匹配算法,
以较长字符串作为基串,较短的从较长的第一个字符比较,寻找最长的匹配串,
再向后移动,循环直到长串的最后字符为止。从这些最长的匹配串中找出最长   的一个   便是所求。
发表于:2007-08-12 21:54:264楼 得分:0
不简单

这个要用动态规划算法
发表于:2007-08-12 21:54:485楼 得分:0
lcs
发表于:2007-08-13 09:51:436楼 得分:0
大家能给我写下代码我,我弄了好几天没弄出来
发表于:2007-08-13 11:08:547楼 得分:0
这用循环比较就应该能做出来,但效率高不高是个问题.
发表于:2007-08-13 14:21:108楼 得分:20
写了个例了:

package   test;

public   class   maxsamesubstring   {
private   string   strone= "abcdefgh ";
private   string   strtwo= "ffadsfasdfbc ";

public   maxsamesubstring()   {
super();
string   temp=getmatsamesubstring(strone,strtwo);
system.out.println(temp);
}

public   static   void   main(string[]   args)   {
new   maxsamesubstring();
}

private   string   getmatsamesubstring(string   strone,string   strtwo){
string   matsub= " ";
for(int   i=0;i <strone.length();i++){
int   index=i+1;
string   sub=strone.substring(i,index);
boolean   iscontinue=true;
while(iscontinue){
if(strtwo.indexof(sub)> =0){
if(matsub.length() <sub.length()){
matsub=sub;
}
index++;
if(index <=strone.length()){
sub=strone.substring(i,index);
}
else{
break;
}
}
else{
break;
}
}
}
return   matsub;
}
}


快速检索

最新资讯
热门点击