赞
踩
输入两个字符串
返回重复出现的字符
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);
- }
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。