华为机试---查找两个字符串a,b中的最长公共子串

原创 2016年05月31日 21:33:18

题目描述

查找两个字符串a,b中的最长公共子串 
输入描述:

输入两个字符串

输出描述:

返回重复出现的字符

输入例子:
abcdefghijklmnop
abcsafjklmnopqrstuvw
输出例子:
jklmnop
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);		
		while (scan.hasNext()) {
			String str1 = scan.nextLine();
			String str2 = scan.nextLine();
			longestCommonSubstring(str1, str2);
		}//endwhile		
		scan.close();
	}
	/**
	 * 打印输出两个字符串的最长公共子串
	 * */
	private static void longestCommonSubstring(String str1 , String str2){
		String long_str = str1.length() >= str2.length() ? str1 : str2;
		String short_str = str1.length() < str2.length() ? str1 : str2;
		String final_str = "";
		int short_length = short_str.length();
		int length = 0;
		for(int i = 0 ; i < short_length - 1 ; i++){
			for(int j = i + 1 ; j <= short_length ; j++ ){
				if(long_str.contains(short_str.substring(i, j)) && j - i > length){
					length = j - i;
					final_str = short_str.substring(i, j);
				}
			}
		}
		System.out.println(final_str);
	}
}


华为OJ——查找两个字符串a,b中的最长公共子串

题目描述 查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。  输入描述: 输入两个字符串 输出描述: 返回重复出现的字符 输入例子: abcdefg...

华为练习--查找两个字符串a,b中的最长公共子串

这个问题:查找两个字符串中的最长公共子串是一个很常见的问题。以前一直都没搞懂,现在终于弄明白了。但是我这里使用的是string类以及它相关的函数。还可以不用string类来实现。...
  • xmh1954
  • xmh1954
  • 2014年09月11日 16:17
  • 1011

华为OJ 公共字串计算&&查找两个字符串a,b中的最长公共子串

题目描述 题目标题: 计算两个字符串的最大公共字串的长度,字符不区分大小写 详细描述: 接口说明 原型: int getCommonStrLength(char * pFirstStr,...

查找两个字符串a,b中的最长公共子串

一、问题描述查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。输入描述:输入两个字符串输出描述:返回重复出现的字符输入例子:abcdefghijklmnop abcsafj...

找出两个字符串最长公共子串

  • 2009年12月01日 13:35
  • 24KB
  • 下载

用动态规划的方法求解两个字符串的最长公共子串

package dynamicprogramming; public class LCS { public static int c[][]; //c[i][j]表示Xi和Yj的LCS长度 ...

两个字符串的最长公共子串-后缀数组

求解两个子串的最长公共子串一般常用的是动态规划算法,但是用后缀数组来处理这一类问题会非常简便,在很多刷题系统中基本都有最长公共子串的处理,所以这一类问题是比较重要的。 c++版本的后缀数组处理最长公...
  • uestclr
  • uestclr
  • 2016年02月03日 19:55
  • 407

求两个字符串的最长公共子串(LCS)

记字符串Xi和Yj的LCS的长度为c[i,j](c[i][j] 代表了长度为i的X子串和长度为j的Y子串的LCS的长度),我们可以递归地求c[i,j]:           /      0    ...

两个字符串的最长公共子串

例如str1:=“abcd”;str2 = “bcde”; 定义一个二维数组啊arr[4[4]; a b c d b 0 1 0 0 c 0 0 1 0 d 0 0 0 0 e 0 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:华为机试---查找两个字符串a,b中的最长公共子串
举报原因:
原因补充:

(最多只允许输入30个字)