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