永发信息网

用JAVA编写一个程序实现,计算两个字符串最长相同子串的长度。

答案:5  悬赏:0  手机版
解决时间 2021-02-19 10:35
根据题目要求,尽可能简单哦。。。谢谢各位大神
最佳答案
(int j = i; j < s1.length(); j++)
改为
(int j = i; j < s1.length()+1; j++)
因为substring(start, end)方法中end是不取值的,也就是结尾取end-1,你可以试试两个相同字符串比较会少找一个
全部回答
这个我写过哎!等等。 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)); } }
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; } } } } }
//刚才写的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; } }
善意提示: 前面的substring的程序有bug,String1 = 'aaahello' String2='hello' 试试看! stringObject.substring(start,stop) start 必需。 一个非负的整数,规定要提取的子串的第一个字符在stringObject 中的位置。 stop 可选。 一个非负的整数,比要提取的子串的最后一个字符在stringObject 中的位置多1。 如果省略该参数,那么返回的子串会一直到字符串的结尾。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我进入了一个新单位,很害怕,第一次这么害怕
想知道: 济南市 从火车站到商河县怎么坐公交
中国人寿组员晋升誓言
玉林市外贸土畜产公司这个地址在什么地方,我
我想问一下北京光大银行待遇怎么样阿。
开口腔诊所好呢?还是口腔门诊部好呢?
我今年27岁了,想学习声乐和钢琴,不知道报什么
1.y=√1-2x(x≤1\2)求值域2.y=x²+x-2
颜玉养生馆怎么去啊,有知道地址的么
梦见吵架大哭
怎么将监控摄像头改造电脑视频用
新华网石家庄2008年9月2日电,3年前崔彤的
坚美铝材辉煌不锈钢这个地址在什么地方,我要
安驾a622胎压监测器多少钱
人教版初一下册语文有什么重点课文???
推荐资讯
杂交水稻、嫁接水果、转基因大豆…人类吃多了
好又多生活购物中心这个地址在什么地方,我要
大批量白色衣服上有画粉怎么去掉
EXCEL中,如A1=128,B1=35,求公式C1=A1的个位数
学材料的能进电力系统吗
梦到坐电梯按我家楼层 不是上高了就是下低了
正常细胞内K+浓度约为细胞外的30倍,细胞外Na
少女前线 第零战役需要多少战力能开
24了父母嫌我不会说话怎么办,还有一紧张就不
另一位英雄王 法尔西昂装备怎么获取
我有一只母的小美短,你要吗,很健康,疫苗还
浅谈小复式楼装修注意事项有哪些
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?