您的位置:首页 > 编程语言 > Java开发

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

2016-05-31 21:33 495 查看


题目描述

查找两个字符串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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 华为