相邻字符串重复问题 本帖最后由 taijh999 于 2009-12-28 19:36:56 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 asdf:2 rt:2 as:2 这个是什么意思呀,没太理解你的意思。 楼主的确说得很简洁呀~~。"asdfrtyrtaseeeasdf"按 as sd df fr rt ...dfasd sdf frt rty .....sdf……………………asdf sdfr dfrt ....asdf 等进行统计 asdf:2rt:2…………as:2 这个是按我自己理解些的,代码没时间整理了,不要笑。import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;public class Test { Map<String, Integer> maps = new HashMap<String, Integer>(); List<String> list = new ArrayList<String>(); public void stringCount(String string){ int l = string.length(); for(int i=2;i<l;i++){ for(int j = 0;j<l-i+1;j++){ list.add(string.substring(j,i+j)); } count(list); list.clear(); } print(maps); } public void print(Map<String, Integer> maps){ Set<String> keys = maps.keySet(); Iterator<String> it = keys.iterator(); while(it.hasNext()){ String key = it.next(); System.out.println(key + ":" + maps.get(key)); } } public void count(List<String> list){ List<String> newList = new ArrayList<String>(); Iterator<String> it = list.iterator(); while(it.hasNext()){ String temp = (String) it.next(); if(newList.contains(temp)){ if(maps.get(temp)==null){ maps.put(temp, 2); } else { maps.put(temp,maps.get(temp)+1); } }else { newList.add(temp); } } } public static void main(String[] args) { new Test().stringCount("asdfrtyrtaseeeasdf"); }} import java.util.Set;import org.apache.commons.collections.Bag;import org.apache.commons.collections.bag.TreeBag;public class Test { public static void main(String[] args) { String str = "asdfrtyrtaseeeasdf"; Bag bag = new TreeBag(); for (int i = 1; i <= str.length(); i++) { for (int j = 0; j + i <= str.length(); j++) { bag.add(str.substring(j, i + j)); } } Set<String> set = bag.uniqueSet(); for (String s : set) { System.out.println(s + "\t" + bag.getCount(s)); } }}注:使用了apache commons-collections 3.2.1该示例计算结果:a 3as 3asd 2asdf 2asdfr 1asdfrt 1asdfrty 1asdfrtyr 1asdfrtyrt 1asdfrtyrta 1asdfrtyrtas 1asdfrtyrtase 1asdfrtyrtasee 1asdfrtyrtaseee 1asdfrtyrtaseeea 1asdfrtyrtaseeeas 1asdfrtyrtaseeeasd 1asdfrtyrtaseeeasdf 1ase 1asee 1aseee 1aseeea 1aseeeas 1aseeeasd 1aseeeasdf 1d 2df 2dfr 1dfrt 1dfrty 1dfrtyr 1dfrtyrt 1dfrtyrta 1dfrtyrtas 1dfrtyrtase 1dfrtyrtasee 1dfrtyrtaseee 1dfrtyrtaseeea 1dfrtyrtaseeeas 1dfrtyrtaseeeasd 1dfrtyrtaseeeasdf 1e 3ea 1eas 1easd 1easdf 1ee 2eea 1eeas 1eeasd 1eeasdf 1eee 1eeea 1eeeas 1eeeasd 1eeeasdf 1f 2fr 1frt 1frty 1frtyr 1frtyrt 1frtyrta 1frtyrtas 1frtyrtase 1frtyrtasee 1frtyrtaseee 1frtyrtaseeea 1frtyrtaseeeas 1frtyrtaseeeasd 1frtyrtaseeeasdf 1r 2rt 2rta 1rtas 1rtase 1rtasee 1rtaseee 1rtaseeea 1rtaseeeas 1rtaseeeasd 1rtaseeeasdf 1rty 1rtyr 1rtyrt 1rtyrta 1rtyrtas 1rtyrtase 1rtyrtasee 1rtyrtaseee 1rtyrtaseeea 1rtyrtaseeeas 1rtyrtaseeeasd 1rtyrtaseeeasdf 1s 3sd 2sdf 2sdfr 1sdfrt 1sdfrty 1sdfrtyr 1sdfrtyrt 1sdfrtyrta 1sdfrtyrtas 1sdfrtyrtase 1sdfrtyrtasee 1sdfrtyrtaseee 1sdfrtyrtaseeea 1sdfrtyrtaseeeas 1sdfrtyrtaseeeasd 1sdfrtyrtaseeeasdf 1se 1see 1seee 1seeea 1seeeas 1seeeasd 1seeeasdf 1t 2ta 1tas 1tase 1tasee 1taseee 1taseeea 1taseeeas 1taseeeasd 1taseeeasdf 1ty 1tyr 1tyrt 1tyrta 1tyrtas 1tyrtase 1tyrtasee 1tyrtaseee 1tyrtaseeea 1tyrtaseeeas 1tyrtaseeeasd 1tyrtaseeeasdf 1y 1yr 1yrt 1yrta 1yrtas 1yrtase 1yrtasee 1yrtaseee 1yrtaseeea 1yrtaseeeas 1yrtaseeeasd 1yrtaseeeasdf 1 Bag是Java Collection的一个补充。Set是集合,集合里不能有重复元素,Bag是包,一个书包里可以有很多一样的东西,并且能把一样的元素给数出来。思路就是把所有子串扔到包里,然后数一下每一类有多少个。 急急急 怎么显示图片 !!! 发一段CompareTo 方法的例子,其中很有意思的一段输出,大家看看,都代表了什么? 如何得到一个字符串中汉字的个数? [求助]小弟剩下的分都填上了,关于解析HTML文本的问题 tomcat安装失败 请教一个小问题-继承 急求在线 有没有人玩连连看?讨论一下java算法 IntelliJ 3.0注册号.和用户名? 我彻底傻了:看都看不懂!!只有请教高人,看看大家有没有经历过,有经验的人应当遇到过,我少见多怪??? 如何卸载Java JTabbedPane隐藏标签
rt:2 as:2 这个是什么意思呀,没太理解你的意思。
按 as sd df fr rt ...df
asd sdf frt rty .....sdf
…………
…………
asdf sdfr dfrt ....asdf 等进行统计
asdf:2
rt:2
……
……
as:2 这个是按我自己理解些的,代码没时间整理了,不要笑。import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;public class Test {
Map<String, Integer> maps = new HashMap<String, Integer>();
List<String> list = new ArrayList<String>();
public void stringCount(String string){
int l = string.length();
for(int i=2;i<l;i++){
for(int j = 0;j<l-i+1;j++){
list.add(string.substring(j,i+j));
}
count(list);
list.clear();
}
print(maps);
}
public void print(Map<String, Integer> maps){
Set<String> keys = maps.keySet();
Iterator<String> it = keys.iterator();
while(it.hasNext()){
String key = it.next();
System.out.println(key + ":" + maps.get(key));
}
}
public void count(List<String> list){
List<String> newList = new ArrayList<String>();
Iterator<String> it = list.iterator();
while(it.hasNext()){
String temp = (String) it.next();
if(newList.contains(temp)){
if(maps.get(temp)==null){
maps.put(temp, 2);
} else {
maps.put(temp,maps.get(temp)+1);
}
}else {
newList.add(temp);
}
}
} public static void main(String[] args) {
new Test().stringCount("asdfrtyrtaseeeasdf");
}}
import java.util.Set;import org.apache.commons.collections.Bag;
import org.apache.commons.collections.bag.TreeBag;public class Test { public static void main(String[] args) {
String str = "asdfrtyrtaseeeasdf";
Bag bag = new TreeBag();
for (int i = 1; i <= str.length(); i++) {
for (int j = 0; j + i <= str.length(); j++) {
bag.add(str.substring(j, i + j));
}
}
Set<String> set = bag.uniqueSet();
for (String s : set) {
System.out.println(s + "\t" + bag.getCount(s));
}
}
}注:使用了apache commons-collections 3.2.1该示例计算结果:
a 3
as 3
asd 2
asdf 2
asdfr 1
asdfrt 1
asdfrty 1
asdfrtyr 1
asdfrtyrt 1
asdfrtyrta 1
asdfrtyrtas 1
asdfrtyrtase 1
asdfrtyrtasee 1
asdfrtyrtaseee 1
asdfrtyrtaseeea 1
asdfrtyrtaseeeas 1
asdfrtyrtaseeeasd 1
asdfrtyrtaseeeasdf 1
ase 1
asee 1
aseee 1
aseeea 1
aseeeas 1
aseeeasd 1
aseeeasdf 1
d 2
df 2
dfr 1
dfrt 1
dfrty 1
dfrtyr 1
dfrtyrt 1
dfrtyrta 1
dfrtyrtas 1
dfrtyrtase 1
dfrtyrtasee 1
dfrtyrtaseee 1
dfrtyrtaseeea 1
dfrtyrtaseeeas 1
dfrtyrtaseeeasd 1
dfrtyrtaseeeasdf 1
e 3
ea 1
eas 1
easd 1
easdf 1
ee 2
eea 1
eeas 1
eeasd 1
eeasdf 1
eee 1
eeea 1
eeeas 1
eeeasd 1
eeeasdf 1
f 2
fr 1
frt 1
frty 1
frtyr 1
frtyrt 1
frtyrta 1
frtyrtas 1
frtyrtase 1
frtyrtasee 1
frtyrtaseee 1
frtyrtaseeea 1
frtyrtaseeeas 1
frtyrtaseeeasd 1
frtyrtaseeeasdf 1
r 2
rt 2
rta 1
rtas 1
rtase 1
rtasee 1
rtaseee 1
rtaseeea 1
rtaseeeas 1
rtaseeeasd 1
rtaseeeasdf 1
rty 1
rtyr 1
rtyrt 1
rtyrta 1
rtyrtas 1
rtyrtase 1
rtyrtasee 1
rtyrtaseee 1
rtyrtaseeea 1
rtyrtaseeeas 1
rtyrtaseeeasd 1
rtyrtaseeeasdf 1
s 3
sd 2
sdf 2
sdfr 1
sdfrt 1
sdfrty 1
sdfrtyr 1
sdfrtyrt 1
sdfrtyrta 1
sdfrtyrtas 1
sdfrtyrtase 1
sdfrtyrtasee 1
sdfrtyrtaseee 1
sdfrtyrtaseeea 1
sdfrtyrtaseeeas 1
sdfrtyrtaseeeasd 1
sdfrtyrtaseeeasdf 1
se 1
see 1
seee 1
seeea 1
seeeas 1
seeeasd 1
seeeasdf 1
t 2
ta 1
tas 1
tase 1
tasee 1
taseee 1
taseeea 1
taseeeas 1
taseeeasd 1
taseeeasdf 1
ty 1
tyr 1
tyrt 1
tyrta 1
tyrtas 1
tyrtase 1
tyrtasee 1
tyrtaseee 1
tyrtaseeea 1
tyrtaseeeas 1
tyrtaseeeasd 1
tyrtaseeeasdf 1
y 1
yr 1
yrt 1
yrta 1
yrtas 1
yrtase 1
yrtasee 1
yrtaseee 1
yrtaseeea 1
yrtaseeeas 1
yrtaseeeasd 1
yrtaseeeasdf 1
思路就是把所有子串扔到包里,然后数一下每一类有多少个。