-
题目描述:
-
给出一个01字符串(长度不超过100),求其每一个子串出现的次数。
-
输入:
-
输入包含多行,每行一个字符串。
-
输出:
-
对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。
-
样例输入:
-
10101
-
样例输出:
-
0 2 01 2 1 3 10 2 101 2
代码:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
while(input.hasNext())
{
Map<String, Integer> count = new HashMap<String,Integer>();
String str = input.nextLine();
for(int i = 0;i < str.length();i++)
for(int j = i + 1;j <= str.length();j++)
{
String temp = str.substring(i,j);
if(count.get(temp) == null)
count.put(temp, 1);
else
{
int value = count.get(temp);
count.put(temp, ++value);
}
}
Collection<String> keyset = count.keySet();
List<String> list = new ArrayList<String>(keyset);
Collections.sort(list);
for(String object : list)
{
if(count.get(object) > 1)
System.out.println(object + " " + count.get(object));
}
}
}
}