JavaStudy——0036:优美字符串

总时间限制: 1000ms 内存限制: 65536kB

描述
对于给定的两个字符串,我们将要做的是将它们拼接起来,拼接成一个“优美”的字符串,那么什么样的字符串是优美的呢?举一个例子,我们要求拼接时,第一个字符串ABCE在前,第二个字符串CEDF在后,拼接的结果是ABCECEDF,接着,我们要对这个ABCECEDF进行修饰,要求将它们在连接处相同的子串重叠在一起,重叠之后的结果为ABCEDF,这就是拼接形成的优美的字符串,现在请你完成这个任务。

输入
输入包含两个用空格隔开的字符串s1和s2
输出
输出一个字符串,表示拼接之后的“优美字符串”

样例输入

ABB ABB

样例输出

ABB

提示
s1和s2的长度 1≤L≤1000

Accepted代码

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String s1=in.next(),s2=in.next();
        int len1=s1.length(),len2=s2.length();
        char[] c=s1.toCharArray(),d=s2.toCharArray();
        int k,pos=len1;
        for (int i=0;i<len1;i++) {
            k=0;
            if(c[i]==d[k]) {
                int j;
                for (j=i+1;j<len1;j++) {
                    k++;
                    if(k>=len2) break;
                    if(d[k]!=c[j]) break;
                }
                if(j==len1)
                    pos=i;break;
            }
        }
        for (int i=0;i<pos;i++)
            System.out.print(c[i]);
        System.out.println(s2);
        in.close();
    }
}

另:

import java.util.Scanner;
public class Main { 
    public static void main(String[] args) throws Exception {
        Scanner in=new Scanner(System.in);
        String s1=in.next(),s2=in.next();
        int i=0;
        for(i=s2.length();i>0;i--) {
            if(s1.endsWith(s2.substring(0,i))) break;
        }
        System.out.println(s1+s2.substring(i));
        in.close();
    }
}

你可能感兴趣的:(OpenJudge,-,javastudy)