最长公共子串 java_求两个字符串的最长公共子串——Java实现

本文介绍如何使用Java编程解决找到两个字符串的最长公共连续子串问题。通过遍历较短字符串并检查是否包含在较长字符串中,找到最长匹配的子串。示例代码展示了具体的实现细节,并给出了一组示例输入和输出。
摘要由CSDN通过智能技术生成

要求:求两个字符串的最长公共子串,如“abcdefg”和“adefgwgeweg”的最长公共子串为“defg”(子串必须是连续的)

public class Main03{

// 求解两个字符号的最长公共子串

public static String maxSubstring(String strOne, String strTwo){

// 参数检查

if(strOne==null || strTwo == null){

return null;

}

if(strOne.equals("") || strTwo.equals("")){

return null;

}

// 二者中较长的字符串

String max = "";

// 二者中较短的字符串

String min = "";

if(strOne.length() < strTwo.length()){

max = strTwo;

min = strOne;

} else{

max = strTwo;

min = strOne;

}

String current = "";

// 遍历较短的字符串,并依次减少短字符串的字符数量,判断长字符是否包含该子串

for(int i=0; i

for(int begin=0, end=min.length()-i; end<=min.length(); begin++, end++){

current = min.substring(begin, end);

if(max.contains(current)){

return current;

}

}

}

return null;

}

public static void main(String[] args) {

String strOne = "abcdefg";

String strTwo = "adefgwgeweg";

String result = Main03.maxSubstring(strOne, strTwo);

System.out.println(result);

}

}

9444af008a7d27a46599fb0fec1213ae.png

总觉得这题,输出结果和题意不相符合,结果2,是不是把B序列翻转,求出两者最长公共子串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值