文章

8

粉丝

216

获赞

20

访问

67.2k

头像
使用Map容器;关键字key与键值value一一对应;使用迭代器进行循环
推荐阅读
P1249 北京大学机试题
发布于2021年5月7日 11:12
阅读数 7.4k

#include<bits/stdc++.h>
using namespace std;

string str;

int main(){
	while(cin >> str){
		//使用map容器;相当于字典:一个关键字对应一个值
		//关键字是唯一标识
		//map<key, value>;key-关键字、value-值
		map<string, int> m;
		int len = str.length();
		//对于该字符串的每个子串建立键值匹配
		for(int i=0; i<len; i++){
			//如字符串10101
			//从i为0开始:得到子串 1/10/101/1010/10101
			//当i为1:得到子串 0/01/010/0101
			//当i为2:得到子串 1/10/101
			//当i为3:得到子串 0/01
			//当i为4:得到子串 1
			for(int j=i; j<len; j++){
				string s = str.substr(i, j-i+1);//从i位置向后取长度为j-i+1的子串
				//对应子串的值增加;用于计数
				m[s]++;
			}
		}
		for(map<string, int>::iterator it = m.begin(); it!=m.end(); it++){
			//使用迭代器;it->second指向value值
			//it->first指向关键字key
			if(it->second > 1)
				cout << it->first << " " << it->second << endl;
		}
	}
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发