Java用string类取出两个字符串中相同的最长小串。
如题,例如strings1="fds123dfsghello";strings2="fdfjjhaski1hello"找出上面两个字符串中相同的字符串,并且是最长的。我的...
如题,例如string s1 = "fds123dfsghello"; string s2 ="fdfjjhaski1hello"
找出上面两个字符串中相同的字符串,并且是最长的。
我的思路是用for循环嵌套,string类的方法去做,但是不知道该怎么弄,求大师们帮帮我~~ 展开
找出上面两个字符串中相同的字符串,并且是最长的。
我的思路是用for循环嵌套,string类的方法去做,但是不知道该怎么弄,求大师们帮帮我~~ 展开
2个回答
2014-12-25
展开全部
import java.lang.Character.Subset;
/*
* 通过两个字符串数组,求其中最大相同项
*
* 思路:1.要是其中一个短的字符串包含在长的字符串中,直接输出这个短的即为所求
* 2.短的字符串要不是其最大相同项。就按照从多往少判断,这里面的具体就是从最大项
* 减一,用减一查出来有多少对数组进行向下判断。
*
* */
public class test1 {
/**
* @param args
*/
public static void main(String[] args) {
String s1 = "符串要不是其最大相同项。就按照从多往少判断,这里面的具体就是从最大项";
String s2 = "最大相同项";
String sub = Maxsubstring(s1, s2);
System.out.println("Maxsubstring:" + sub);
}
public static String Maxsubstring(String s1, String s2) {
String max = (s1.length() > s2.length()) ? s1 : s2;
String min = max.equals(s1) ? s2 : s1;
for (int i = 0; i < min.length(); i++) {
for (int m = 0, n = min.length() - i; n != min.length() + 1; m++, n++) {
// System.out.println(min.substring(m, n));
String sub = min.substring(m, n);
if (max.contains(sub)) {
return sub;
}
}
}
return null;
}
}
//可以改下你String,调试一下,往采纳
/*
* 通过两个字符串数组,求其中最大相同项
*
* 思路:1.要是其中一个短的字符串包含在长的字符串中,直接输出这个短的即为所求
* 2.短的字符串要不是其最大相同项。就按照从多往少判断,这里面的具体就是从最大项
* 减一,用减一查出来有多少对数组进行向下判断。
*
* */
public class test1 {
/**
* @param args
*/
public static void main(String[] args) {
String s1 = "符串要不是其最大相同项。就按照从多往少判断,这里面的具体就是从最大项";
String s2 = "最大相同项";
String sub = Maxsubstring(s1, s2);
System.out.println("Maxsubstring:" + sub);
}
public static String Maxsubstring(String s1, String s2) {
String max = (s1.length() > s2.length()) ? s1 : s2;
String min = max.equals(s1) ? s2 : s1;
for (int i = 0; i < min.length(); i++) {
for (int m = 0, n = min.length() - i; n != min.length() + 1; m++, n++) {
// System.out.println(min.substring(m, n));
String sub = min.substring(m, n);
if (max.contains(sub)) {
return sub;
}
}
}
return null;
}
}
//可以改下你String,调试一下,往采纳
展开全部
public class StringTest {
public static void main(String[] args) {
String s1 = "adafafagafgagfdgsdfgsdfgsdfgsdf";
String s2 = "fgagfdgsadaf";
String maxSub = getMaxSubString(s1, s2);
System.out.println("比较的结果是:" + maxSub);
}
public static String getMaxSubString(String string1, String string2) {
String longStr, shortStr;
longStr = string1.length() > string2.length() ? string1 : string2;
shortStr = string1.equals(longStr) ? string2 : string1;
//System.out.println("long:" + longStr);
//System.out.println("short:" + shortStr);
for (int i = 0; i < shortStr.length(); i++) {
for (int j = 0, z = shortStr.length() - i; z < shortStr.length(); j++, z++) {
String temp = shortStr.substring(j, z);
//System.out.println(temp);此处是为了检验打印子串
if (longStr.contains(temp)) {
return temp;
}
}
}
return null;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询