永发信息网

用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,你可以试试两个相同字符串比较会少找一个
全部回答
  • 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。 如果省略该参数,那么返回的子串会一直到字符串的结尾。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯