华为OJ——查找两个字符串a,b中的最长公共子串
2016-08-22 16:12
190 查看
题目描述
查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。 输入描述:
输入两个字符串
输出描述:
返回重复出现的字符
输入例子:
abcdefghijklmnop abcsafjklmnopqrstuvw
输出例子:
jklmnop
方法一:
import java.util.*;
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();
int maxLength=0;//记录最长共同字符串的长度
String maxStr="";//记录最长共同字符串
//默认第一个字符串为短字符串,如果第二个更短,则交换两个字符串的位置,把第一个变成短的,第二个变成长的
if(str1.length()>str2.length()){
String temp=str2;
str2=str1;
str1=temp;
}
//从最长长度开始,依次递减查看有没有共同的
for(int i=0;i<str1.length()-1;i++){
String str=Give(str1.substring(i),str2);
if(str.length()>maxLength && str!="a"){
maxStr=str;
maxLength=str.length();
}
}
System.out.println(maxStr);
}
}
//输入两个字符串,返回最长的公共部分
static String Give(String str1,String str2)
{
String subStr="";
for(int j=str1.length()-1;j>0;j--){
subStr=str1.substring(0,j+1);
if(str2.contains(subStr)){
return subStr;
}
}
return "";
}
}方法二:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
String s1 = in.nextLine();
String s2 = in.nextLine();
String max = s1.length() >= s2.length()?s1:s2;
String min = s1.length() >= s2.length()?s2:s1;
int l = 0;
String s ="";
for(int i=0;i<min.length();i++){
for(int j=i+1;j<=min.length();j++){
if(max.contains(min.substring(i,j)) && j-i>l){
l=j-i;
s=min.substring(i,j);
}
}
}
System.out.println(s);
}
}
}
相关文章推荐
- 华为OJ 公共字串计算&&查找两个字符串a,b中的最长公共子串
- 【华为OJ】【081-查找两个字符串a,b中的最长公共子串】
- 华为oj中级 查找两个字符串a,b中的最长公共子串
- 华为OJ中级题-查找两个字符串a,b中的最长公共子串
- 华为oj 查找两个字符串a,b中的最长公共子串
- 华为OJ——查找两个字符串a,b中的最长公共子串
- 华为OJ——查找两个字符串a,b中的最长公共子串
- 【华为oj】oj2034查找两个字符串a,b中的最长公共子串
- 华为OJ(查找两个字符串a,b中的最长公共子串)
- 华为练习--查找两个字符串a,b中的最长公共子串
- 华为(8)查找两个字符串a,b中的最长公共子串
- 华为机试在线训练-牛客网(30)查找两个字符串a,b中的最长公共子串
- OJ------查找两个字符串a,b中的最长公共子串
- 华为机试---查找两个字符串a,b中的最长公共子串
- java 查找两个字符串的最长公共子串
- 查找两个字符串的最长公共子串的Javascript函数
- JavaScript自定义函数实现查找两个字符串最长公共子串的方法
- 今天开始学Java 查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。
- 查找两个字符串a,b中的最长公共子串
- 查找两个字符串的最长公共子串(附源码)_AX