import java.io.IOException;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.Set;
import java.util.Iterator;
class Main
{
public static final boolean DEBUG = false;
public static void main(String[] args) throws IOException
{
Scanner cin;
String s;
if (DEBUG) {
cin = new Scanner(new FileReader("d:\\OJ\\uva_in.txt"));
} else {
cin = new Scanner(new InputStreamReader(System.in));
}
while (cin.hasNext()) {
s = cin.next();
TreeMap<String, Integer> tm = new TreeMap<String, Integer>();
int len = s.length();
for (int i = 1; i < len; i++) {
for (int j = 0; j <= len - i; j++) {
String str = s.substring(j, j + i);
if (tm.containsKey(str)) {
int v = tm.get(str);
tm.put(str, v + 1);
} else {
tm.put(str, 1);
}
}
}
Iterator<String> it = tm.keySet().iterator();
while (it.hasNext()) {
String str = it.next();
if (tm.get(str).intValue() > 1) {
System.out.println(str + " " + tm.get(str));
}
}
}
}
}
TreeMap的另个一种遍历方式:
import java.io.IOException;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.Set;
import java.util.Iterator;
class Main
{
public static final boolean DEBUG = false;
public static void main(String[] args) throws IOException
{
Scanner cin;
String s;
if (DEBUG) {
cin = new Scanner(new FileReader("d:\\OJ\\uva_in.txt"));
} else {
cin = new Scanner(new InputStreamReader(System.in));
}
while (cin.hasNext()) {
s = cin.next();
TreeMap<String, Integer> tm = new TreeMap<String, Integer>();
int len = s.length();
for (int i = 1; i < len; i++) {
for (int j = 0; j <= len - i; j++) {
String str = s.substring(j, j + i);
if (tm.containsKey(str)) {
int v = tm.get(str);
tm.put(str, v + 1);
} else {
tm.put(str, 1);
}
}
}
Iterator<Map.Entry<String, Integer>> it = tm.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Integer> v = it.next();
if (v.getValue() > 1) {
System.out.println(v.getKey()+ " " + v.getValue());
}
}
}
}
}