A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

[Java] 纯文本查看 复制代码
package myexam.test24;


/**
 * 寻找两个字符串中最大的相同子串
 * 
 * 如:"qwerabcdtyniop"
 *   "xcabcdvbn"
 *   
 *   思路:1.看短字符串在长字符串中是否存在,如果存在,那段字符串就是最大子串
 *        2.如果不是,就将短串长度递减去判断
 * 
 * @author lvshen
 *
 */
public class MyTest7 {

	public static void main(String[] args) {
		String longStr="qwerabcdtyniop";
		String shortStr="xcabcdvbn";
		
		String sameStr=getSameStr(longStr, shortStr);
		System.out.println(sameStr);
		
	}
	public static String getSameStr(String longStr,String shortStr){
		for(int i=0;i<shortStr.length();i++){
			for(int j=0,k=shortStr.length()-i;k<shortStr.length();j++,k++){
				String temp=shortStr.substring(j, k);
				if(longStr.contains(temp)){
					return temp;
				}
			}
		}
		return null;
	}
}

6 个回复

倒序浏览
代码分析相当详细!
回复 使用道具 举报
11111111111111111111111111111
回复 使用道具 举报
谢谢分享~
回复 使用道具 举报
好厉害,为什么我就想不到这种循环遍历的方式。循环条件k<=shortStr.length(),不然最后一个元素没法遍历到
回复 使用道具 举报
mrwalker 发表于 2017-3-14 11:23
好厉害,为什么我就想不到这种循环遍历的方式。循环条件k

确实要=
回复 使用道具 举报
935539 中级黑马 2017-3-15 12:40:10
7#

谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马