java最长公共子串_Java 求最大公共子串

在网上看了一些求两个字符串的最大公共子串的例子,因为多是用了一些算法的思想,自己看的不太懂,就自己试着写了一个,结果还是有些惊喜的,虽然应该不是最简单和高效的,但应该是代码比较少的了吧,呵呵~小骄傲一下。

public class CompareStrM

{

public static void main(String[] args)

{

String str1 = "今天,听到一首歌是这么唱的:“明月几时有,把酒问青天”。。。。";

String str2 = "苏轼的“明月几时有,把酒问青天”是千古名句";

String minStr = str1.length() >= str2.length() ? str2 : str1;

String maxStr = str1.length() <= str2.length() ? str2 : str1;

ArrayList lList = new ArrayList();

int maxLength = 1;

for (int i = 0; i < minStr.length() - maxLength * 2; i++) {

String subStr = minStr.substring(i, i + maxLength);

if (maxStr.contains(subStr)) {

String str = null;

int len = maxLength;

do {

len++;

str = minStr.substring(i, i + len);

} while (maxStr.contains(str));

if (len-- >= maxLength) {

lList.add(str.substring(0, str.length() - 1));

maxLength = len;

}

}

}

System.out.println("MaxLength: " + maxLength + "\n");

for (String s : lList) {

if (s.length() == maxLength) {

System.out.print("最大相同子串是: " + s);

}

}

}

}

之后,也会继续整理一些找到的资料贴到下面。

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2011-12-28 14:16

浏览 1500

评论

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值