题目:获取出现次数大于1的字串,以字典序(字串 出现次数)输出
(1)获取所有字串:
这一步比较简单
for(int i=0;i<str.length();i++) {
for(int j=i+1;j<=str.length();j++) {
substr = str.substring(i,j);//得到所有子串
}
}
(2)如何存这些字串?想到了JAVA的一些集合框架:ArrayList可以存所有字串,类似于数组
Map以键值对形式存储,还可以去重,而且以字典序排序(出题者可能就是考Map,反正硬是用基本语言写,我就直接GG了)
声明一下:
Map<String, Integer> map = new TreeMap<String, Integer>(); //map可以自动进行字典排序且去重
ArrayList<String> list = new ArrayList<String>();
存储过程:
for(int i=0;i<str.length();i++) {
for(int j=i+1;j<=str.length();j++) {
substr = str.substring(i,j);//得到所有子串
if (substr.length() != str.length()) {
list.add(substr);
map.put(substr, 0);//设定出现次数为0,后面遍历再获取正确的次数
}
}
}
比对过程
for (int i = 0; i < list.size(); i++) {
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if (list.get(i).equals(entry.getKey())) {
entry.setValue(entry.getValue() + 1);
}
}
}
遍历输出
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if (entry.getValue() > 1) {
System.out.print(entry.getKey() + " " + entry.getValue());
System.out.println();
}
}