各位朋友,小弟最近灵感一现,回忆起以前上学的时候未解决的问题:
例如给个字符串(字符串长度和内容不限) ,假定是"abcabbcabc",那么重复的字符串有:a,b,c,ab,bc,abc,bca,bcab
希望大家给出完整的算法实现,不要伪代码,最好能带关键地方的注释
另注:希望大家用JAVA或者Python或者Javascript实现,万不得已用C也行,其他的语言就不用了(小弟不懂),谢谢大家
注释没有,你自己看看。。。
[code="java"]
package cn.com;
import java.util.HashSet;
import java.util.Set;
public class Test {
public static void main(String[] args) {
String str = "abcabbcabc";
Set<String> set = new HashSet<String>();
Set<String> newstr = new HashSet<String>();
int len = str.length();
for (int i = 0; i < len; i++) {
set.add("" + str.charAt(i));
}
int maxlen = len % 2 == 0 ? len / 2 : (len - 1) / 2;
for (int i = 0; i < maxlen; i++) {
for (int j = i+1 ; j < i+1+maxlen; j++) {
newstr.add(str.substring(i, j));
}
}
for (String strs : newstr) {
String strpat = str.replace(strs, "");
if(strpat.length()<=(str.length()-strs.length()*2)){
System.out.println(strs);
}
}
}
}
[/code]