81,114
社区成员
发帖
与我相关
我的任务
分享





import java.util.*;
import java.util.regex.*;
public class Test {
public static void test4() {
String s = "abcd12345bnfdvvabcd12345hhnvgabcd1234567abc";
Map<String, Integer> map = new HashMap<String, Integer>();
//String result = "";
//int times = 0;
for (int i=0; i<s.length(); i++) {
for (int j=i+1; j<=s.length(); j++) {
String ss = s.substring(i,j);
if (map.containsKey(ss)) {
continue;
}
Pattern p = Pattern.compile(ss);
Matcher m = p.matcher(s);
int count = 0;
while (m.find()) {
count++;
}
if (count >= 2) {
map.put(ss, count);
//if (ss.length() > result.length()) {
// result = ss;
// times = count;
//}
}
}
}
//System.out.printf("max leng substring: %s, appear %d times.\n", result, times);
if (map.size() > 0) {
List<String> list = new ArrayList<String>(map.keySet());
list.sort(new Comparator<String>() {
public int compare(String s1, String s2) {
return (s1.length() < s2.length()) ? 1 : -1;
}
});
String key = list.get(0);
System.out.printf("max leng substring: %s, appear %d times.\n", key, map.get(key));
} else {
System.out.printf("not found.\n");
}
}
}
function test(){
var str="abcd12345bnfdvvabcd12345hhnvgabcd1234567abc";
var count=3;
alert(getSub(str,count));
}
function getSub(test,count){
var length=test.length; //要计算的字符串总长度
var startLen=parseInt(test.length/count); //要查找的字符串最大长度
for(var len=startLen;len>0;len--){
for(var index=0;index<=length-len;index++){
//获取子字符串
var subStr=test.substring(index,index+len);
console.log(subStr+",len="+len+"|index="+index);
var replaceStr=test.replace(new RegExp(subStr,'g'),"");
if((length-replaceStr.length)/len>=count){
return subStr;
}
}
}
return "No val";
}
import java.util.HashMap;
import java.util.Map;
public class Test04 {
public static void main(String[] args) {
String ss = "abcd12345bnfdvvabcd12345hhnvgabcd1234567abc";
new Test04().findSubString(ss, 1, 2);
}
/*
* minLength 字符串最短长度
* minCount 最少出现的次数
* */
void findSubString(String str, int minLength, int minCount) {
Map<Integer, String> result = new HashMap<Integer, String>();
for (int i = 0; i < str.length(); i++) {
for (int j = i + minLength; j < str.length(); j++) {
String tmpSur = str.substring(i, j);
int count = findCount(str, tmpSur);
if (count >= minCount) {
if (!result.containsKey(count)) {
result.put(count, tmpSur);
} else {
if (tmpSur.length() > result.get(count).length()) {
result.remove(count);
result.put(count, tmpSur);
}
}
}
}
}
System.out.println(result);
Integer finalCount = 0;
String finalStr = "";
for (Map.Entry<Integer, String> entry : result.entrySet()) {
if (entry.getValue().length() > finalStr.length()) {
finalStr = entry.getValue();
finalCount = entry.getKey();
}
}
System.out.println("finalStr=" + finalStr + ",出现了" + finalCount + "次");
}
public int findCount(String src, String des) {
int index = 0;
int count = 0;
while ((index = src.indexOf(des, index)) != -1) {
count++;
index++;
}
return count;
}
}