用JAVA编写一个程序实现,计算两个字符串最长相同子串的长度。
答案:5 悬赏:0 手机版
解决时间 2021-02-19 10:35
- 提问者网友:蔚蓝的太阳
- 2021-02-18 12:11
根据题目要求,尽可能简单哦。。。谢谢各位大神
最佳答案
- 五星知识达人网友:几近狂妄
- 2021-02-18 13:00
(int j = i; j < s1.length(); j++)
改为
(int j = i; j < s1.length()+1; j++)
因为substring(start, end)方法中end是不取值的,也就是结尾取end-1,你可以试试两个相同字符串比较会少找一个
改为
(int j = i; j < s1.length()+1; j++)
因为substring(start, end)方法中end是不取值的,也就是结尾取end-1,你可以试试两个相同字符串比较会少找一个
全部回答
- 1楼网友:洒脱疯子
- 2021-02-18 14:50
这个我写过哎!等等。
public class StrStatistic {
public String comparison(String str1, String str2){
String retStr="";
int count=1;
for(int i=0;i<str2.length();i++){
String tmpStr=str2.substring(i,i+1);
boolean flag=contains(str1,tmpStr);
while(flag){
count++;
if(tmpStr.length()>retStr.length()){
retStr=tmpStr;
}
tmpStr=str2.substring(i,i+count);
flag=contains(str1,tmpStr);
System.out.println("tmpStr="+tmpStr);
System.out.println("retStr="+retStr);
}
if(!flag){
count=1;
}
}
return retStr;
}
public boolean contains(String str1,String str2){
if(str1.indexOf(str2)>=0){
return true;
}
return false;
}
public static void main(String[] args) {
String str1="afdafda,dfahello,dfafa,okkos";
String str2="aaahell0";
System.out.println(new StrStatistic().comparison(str1, str2));
}
}
- 2楼网友:拜訪者
- 2021-02-18 14:42
import java.util.scanner;
public class test {
static scanner sc = new scanner(system.in);
public static void main(string[] args) {
system.out.println("输入第一个字符串:");
string s1 = sc.nextline();
system.out.println("输入第二个字符串:");
string s2 = sc.nextline();
string max = null, min = null;
max = s1.length() > s2.length() ? s1 : s2;
min = max.equals(s1) ? s2 : s1;// 找出长短!
for (int i = 0; i < min.length(); i++) {//遍历短
for (int a = 0, b = min.length() - i; b != min.length() + 1; a++, b++) {
string sub = min.substring(a, b);//截取
if (max.contains(sub)) {//找到!
system.out.println("共同字符串为:" + sub);
return;
}
}
}
}
}
- 3楼网友:底特律间谍
- 2021-02-18 13:38
//刚才写的636f7079e799bee5baa631333332643865。。。。
import java.io.DataInputStream;
import java.io.IOException;
public class StringLength {
public String search(String s1, String s2) {
String max = "";
for (int i = 0; i < s1.length(); i++) {
for (int j = i; j < s1.length(); j++) {
String sub = s1.substring(i, j);
if ((s2.indexOf(sub) != -1) && sub.length() > max.length()) {
max = sub;
}
}
}
return max;
}
public static void main(String[] args) {
String a = "";
String b = "";
System.out.println("请输入第一个字符串:");
a = inputString.getString();
System.out.println("请输入第二个字符串:");
b = inputString.getString();
String output = new StringLength().search(a, b);
System.out.println("相同的字符串是:" + output + "长度为:" + output.length());
}
}
class inputString {
public static String getString() {
DataInputStream dis = new DataInputStream(System.in);
String value = null;
try {
@SuppressWarnings("deprecation")
String str = dis.readLine();
value = str;
} catch (IOException e) {
e.printStackTrace();
}
return value;
}
}
- 4楼网友:由着我着迷
- 2021-02-18 13:23
善意提示:
前面的substring的程序有bug,String1 = 'aaahello' String2='hello' 试试看!
stringObject.substring(start,stop)
start 必需。
一个非负的整数,规定要提取的子串的第一个字符在stringObject 中的位置。
stop 可选。
一个非负的整数,比要提取的子串的最后一个字符在stringObject 中的位置多1。
如果省略该参数,那么返回的子串会一直到字符串的结尾。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯