67,512
社区成员
发帖
与我相关
我的任务
分享
if (i - r - 1 >= s.length() / 2)break;
[/quote]
恩,我之前没考虑那么多... 因为只要是字符就循环出来了public static void main(String[] args) {
final String chaine = "abc fghi bc kl abcd lkm abcdefg";
String[] arr = chaine.split(" ");
Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1.length() != o2.length()) {
return o1.length() < o2.length() ? -1 : 1;
}
return o1.compareTo(o2);
}
});
String theStr = arr[arr.length - 1];
Integer theSum = 1;
for (int i = arr.length - 2; i >=0; i--) {
String currentStr = arr[i];
Integer currentSum = 1;
for(int j = i+1; j < arr.length; j++) {
if (arr[j].contains(currentStr))
currentSum++;
}
if (currentSum > 1) {
theStr = currentStr;
theSum = currentSum;
if (i == 0 || arr[i - 1].length() < currentStr.length())
break;
}
}
System.out.println( theStr + " : " + theSum);
}
if (i - r - 1 >= s.length() / 2)break;
import java.util.ArrayList;
/**
* <p>Title: TestString</p>
* <p>Description: 输入字符串,最长重复次数的字符串,并计算其重复次数。空格也当字符处理</p>
* @params
* @author ZhengBing (2014-8-21 下午4:12:17)
*/
public class TestString {
public static void main(String[] args) {
//String s = "abcabdabcmpoer";//结果为:重复字符串:abc,重复次数:2
//String s = "abcdefabcmodef";//结果为:重复字符串:abc,重复次数:2
//重复字符串:def,重复次数:2
String s = "abcdyyyyopqrstabcdiiiiabcdoooopqrst";//结果为:重复字符串:opqrst,重复次数:2
ArrayList<String> subStrings = new ArrayList<String>();
int count = 0;
for (int i = 0; i < s.length(); i++) {
for (int j = i + 1; j <= s.length(); j++) {
String sub = s.substring(i, j);
int c = (s.length() - s.replaceAll(sub, "").length()) / sub.length();
if (subStrings.size() == 0) {
if (c > 1) {
subStrings.add(sub);
count = c;
}
} else {
if (sub.length() > subStrings.get(0).length() && c > 1) {
subStrings.clear();
subStrings.add(sub);
count = c;
} else if (sub.length() == subStrings.get(0).length() && c == count) {
if (!subStrings.contains(sub))
subStrings.add(sub);
}
}
if (j - i - 1 >= s.length() / 2)
break;
}
}
if (subStrings.size() == 0) {
System.out.println("未找到重复字符串。");
} else {
for (int i = 0; i < subStrings.size(); i++) {
System.out.println("重复字符串:" + subStrings.get(i) + ",重复次数:" + count);
}
}
}
}
String s = "字符串";
for (int r = 0; r < s.length()-1; r++) {
for (int i = r + 1; i <= s.length(); i++) {
if (i <= s.length()) {
String dd = s.substring(r, i);
if (s.indexOf(dd) != -1) {
String tmps = s.replaceAll(dd, "");
int len=(s.length()-tmps.length())/dd.length();
if(len>1){//只有大于一次的才记录
System.out.println(dd+"重复出现的次数:"+len);
}
}
}
}