-
题目描述:
-
给出一个01字符串(长度不超过100),求其每一个子串出现的次数。
-
输入:
-
输入包含多行,每行一个字符串。
-
输出:
-
对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。
-
样例输入:
-
10101
-
样例输出:
-
0 2 01 2 1 3 10 2 101 2
-
来源:
- 2010年北京大学计算机研究生机试真题
-
#include <iostream> #include <string> #include <map> using namespace std; int main(int argc, char *argv[]) { string str; while (cin >> str) { map<string,int> mm; for (int i = 0; i < str.size(); ++i) { for (int len = 1; len <= str.size() - i; ++len) //列举出所有的子串 { string tmp = str.substr(i,len); ++mm[tmp]; } } map<string,int>::const_iterator ite; for (ite = mm.begin(); ite != mm.end(); ++ite) { if (ite->second > 1) cout << ite->first << " " << ite->second << endl; } } return 0; }