今天碰到一個算法題覺得比較有意思,研究后自己實現了出來,代碼比較簡單,如發現什么問題請指正。
思路和代碼如下:
基本思路:
從左開始取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")); } }