两个字符串中最大的公共字串

package 数组;

/*
 *本程序寻找两个字符串中最大的公共字串,并且考虑到了长度一样长最大字串。
 *
 * 想法:将一个字串按照从大到小的顺序拆开,第一匹配到的一定是最长字串,待该长度字串循环完毕后,停止循环。
 */
public class getMaxCommanString
{
    public static void main(String a[])
    {
	find("hello aasdxzc world", "hello,world"); // 控制台会输出 hello world
    }

    private static void find(String str, String key)
    {
	String temp = null;
	int y, z;
	boolean flag = false;
	for (int i = 0; i < str.length(); i++) { // 确定偏移位置。
	    for (y = 0, z = (str.length() - i); z != str.length() + 1; y++, z++) {
		//假如原来是10个字符,循环到i=5时,则先取01234,然后12345直到56789 
                //内层循环能够按照“第一循环的偏移位置”所确定的长度循环出字串。
		temp = str.substring(y, z);
	        if (key.contains(temp)) {
		    System.out.println(temp);
		    flag = true;
		}
	    }
	    if (flag) {
//这个是在完成一次内层循环时候的判定,flag为真说明该长度的已经匹配完了,而且有,那么下面更短的不需要匹配了。
 		break;
	    }
	}
    }
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值