java 截取指定字母 重复_用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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值