取出两个字符串中最大相同的子串

//*************************************************************************
//题目要求:4、取出两个字符串中最大相同的子串。
//*************************************************************************

public class SearchMaxSameString {

    public static void main(String[] args) {
        String str1 = null;
        String str2 = null;
        String maxStr = null;
        // 输入两个字符串
        Scanner input = new Scanner(System.in);
        System.out.print("请输入字符串str1:");
        str1 = input.nextLine();
        System.out.print("请输入字符串str2:");
        str2 = input.nextLine();
        // 将输入的两个字符串安长短区分开
        String shortStr = str1.length() > str2.length() ? str2 : str1;
        String longStr = shortStr.equals(str1) ? str2 : str1;
        // 调用maxSerach获得最大字符串
        maxStr = maxString(shortStr, longStr);
        // 输出字符串
        System.out.println("最大相同子串是:" + maxStr);
        input.close();

    }

    // 定义静态方法maxSerach来获得最大字符串
    public static String maxString(String shortStr, String longStr) {
        // 定义一个空字符串来存储最大字符串
        String maxStr = "";
        // 以两个字符串中短字符串为准,来求得最大相同字符串
        for (int i = 0; i < shortStr.length(); i++) {
            // 从前往后,依次截取子字符串存放在临时字符串temp1中
            String temp1 = shortStr.substring(i);
            for (int j = temp1.length() - 1; j >= 0; j--) {
                // 在获得的临时子字符串temp1上再从后往前截取,以获得所有子字符串存放到temp2
                String temp2 = temp1.substring(0, j);
                // 如果存在子字符串,并且该子字符串的长度最大则付给maxStr
                if (longStr.indexOf(temp2) != -1
                        && temp2.length() > maxStr.length()) {
                    maxStr = temp2;
                }
            }
        }
        // 返回maxStr
        return maxStr;
    }

}
// *************************************************************************
// 测试结果:
// 请输入字符串str1:ffdsajoifwwqn3342nkjnf23n42fsd
// 请输入字符串str2:fdafioenrjoifwwqn3342nkjnf23n4023jfs,adfj
// 最大相同子串是:joifwwqn3342nkjnf23n4
// *************************************************************************

求最大相同字符串的代码忘了参考那位仁兄的了,对不住喽!

转载于:https://www.cnblogs.com/keysun/p/4246560.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值