我是大魔王哈哈

2020-11-06   阅读量: 1006

大数据

用JAVA编程获取两个指定字符串中的最大相同子串

扫码加入数据分析学习群

/**

* 编程获取两个指定字符串中的最大相同子串

* 如:str1="asdafghjka", str2="aaasdfg" 他们的最大子串为"asd"

* 提示:让较短字符串依次递减,并要求每次递减之后的子字符串连续, 这样就能找出str2的全部子串

* str2 7个字符 索引:0-6 aaasdfg

* str2 6个字符 索引:0-5 aaasdf 1-6 aasdfg

* str2 5个字符 索引:0-4 aaasd 1-5 aasdf 2-6 asdfg

* str2 4个字符 索引:0-3 aaas 1-4 aasd 2-5 asdf 3-6 sdfg

* str3 3个字符 索引:0-2 aaa 1-3 aas 2-4 asd 3-5 sdf 4-6 dfg

* str2 2个字符 索引:0-1 aa 1-2 aa 2-3 as 3-4 sd 4-5 df 5-6 fg

* str2 1个字符 索引:0 a 1 a 2 a 3 s 4 d 5 f 6 g

*/


public class job2Test {

static String minStr;

static String maxStr;

static String subMinStr;// minStr的子字符串


public static String test(String str1, String str2) {

// 判断str1和str2哪个是较短的字符串

if (str1.length() < str2.length()) {

minStr = str1;

maxStr = str2;

} else {

minStr = str2;

maxStr = str1;

}

System.out.println("maxStr: " + maxStr + ", " + "minStr: " + minStr);


// 找出相同的最长子字符串

boolean flag=true;

for (int i = 0; i < minStr.length(); i++) { // i 控制行数


if (!flag) break;

System.out.print("subMinStr: ");


for (int j = 0; j <= i; j++) {// j 控制每一行的列数及str2字符串开始下标

// subStr2是str2所有可能的子字符串

subMinStr = minStr.substring(j, minStr.length() - i + j); // minStr.length()-i+j 控制str2字符串结束下标

System.out.print(subMinStr + " ");

if (maxStr.contains(subMinStr)) { // 如果maxStr包含了minStr或者minStr的子字符串,那么就结束循环

flag = false;

break;

}

}

System.out.println();

}

return subMinStr;

}


public static void main (String[]args){


String MaxSubStr = test("asdafghjka", "aaasdfg");

System.out.println("相同的最大字符串是:" + MaxSubStr);

}

}


运行结果:

"F:\Program Files\JDK\JDK11\bin\java.exe" "-javaagent:F:\Program Files\IDEA\IntelliJ IDEA 2020.1.1\lib\idea_rt.jar=14247:F:\Program Files\IDEA\IntelliJ IDEA 2020.1.1\bin" -Dfile.encoding=UTF-8 -classpath "F:\Program Files\drag hook\Big Data\Project\java\javase\out\production\javase" com.lagou.model3.job.job2Test

maxStr: asdafghjka, minStr: aaasdfg

subMinStr: aaasdfg

subMinStr: aaasdf aasdfg

subMinStr: aaasd aasdf asdfg

subMinStr: aaas aasd asdf sdfg

subMinStr: aaa aas asd

相同的最大字符串是:asd


Process finished with exit code 0

5

40.0218 2 0 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子