java语言中编程求解两个字符串最长相同字符串的长度
发布网友
发布时间:2022-05-13 21:21
我来回答
共2个回答
热心网友
时间:2022-04-22 15:12
public class StringTest4 {
/**
* @param args
*/
public static void main(String[] args) {
/*
* 需求4:两个字符串的最大相同子串。
* "sadfcctvghjkl"
* "zxcctvcv"
*
* 思路:
* 1,以短的字符串为主。
* 到长的字符串中去判断是否存在,如果存在,已找到。
* 2,如果没有找到。将短的字符串的长度递减获取子串继续到长的串中查找。只要找到就结束。
* 3,没有找到,说明没有相同的。
*
*/
String s1 = "sadfcctvghjkl";
String s2 = "zxcctvcv";
String maxSub = getMaxSubString(s2,s1);
System.out.println("maxsub="+maxSub+" length="+maxSub.length());
}
public static String getMaxSubString(String s1, String s2) {
//确定哪个是长的哪个是短的。
String longStr,shortStr;
longStr = s1.length()>s2.length()?s1:s2;
shortStr = s1.equals(longStr)?s2:s1;
//System.out.println("long:"+longStr);
//System.out.println("short:"+shortStr);
//对短的字符串操作,从短串中取子串,到长字符串中判断,是否存在。
for(int x=0; x<shortStr.length(); x++){
for(int y=0,z=shortStr.length()-x; z<=shortStr.length(); y++,z++){
//根据y,z,获取子串。
String temp = shortStr.substring(y,z);
//System.out.println(temp);
if(longStr.contains(temp))
return temp;
}
}
return null;
}
}
热心网友
时间:2022-04-22 16:30
动态规划算法 网上有很多的 自己百度 看懂动态规划算法你就会了