今天碰到一个算法题觉得比较有意思,研究后自己实现了出来,代码比较简单,如发现什么问题请指正。
思路和代码如下:
基本思路:
从左开始取str的最大子字符串,判断子字符串是否为str的后缀,如果是则返回str加子字符串剩余部分;如果不是则逐步减少子字符串长度后在进行比较。
/* * 给出一个字符串s,输出包含两个字符串s的最短字符串,如s为abca时,输出则为abcabca */ public class ContainTwoString { public static String MergeString(String str) { String results = null; int len = str.length(); for (int i = len-1;i>+0;i--){ String prefix = str.substring(0, i); if (str.endsWith(prefix)){ results = str + str.substring(i,len); } } return results; } public static void main(String args[]){ System.out.println(ContainTwoString.MergeString("abca")); } }