Day 38 算法笔记之STL 6.3 map的常用用法详解

目录

1.Mars Numbers

2.Speech Patterns


1.Mars Numbers

#include<iostream>
#include<map>
#include<string>
using namespace std;

string unitdigit[13] ={"tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"};
string tendigit[13] ={"tret","tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mer","jou"};
string numtostr[170];
map<string,int> strtonum;

void init(){
	for(int i=0;i<13;i++){
		numtostr[i]=unitdigit[i];
		strtonum[unitdigit[i]] = i;
		numtostr[i*13]=tendigit[i];
		strtonum[tendigit[i]] = i*13;
	}
	for(int i=1;i<13;i++){
		for(int j=1;j<13;j++){
			string str=tendigit[i]+' '+unitdigit[j];
			numtostr[i*13+j] = str;
			strtonum[str] = i*13+j;
		}
	}
}

int main(){
	init();
	int n;
	scanf("%d",&n);
	getchar();
	while(n--){
		string str;
		getline(cin,str);
		if(str[0]>='0'&&str[0]<='9'){
			int num=0;
			for(int i=0;i<str.length();i++){
				num = num*10+(str[i]-'0');
			}
			cout<<numtostr[num]<<endl;
		}else{
			cout<<strtonum[str]<<endl;
		}
	}
	
	return 0;
}

2.Speech Patterns

#include<iostream>
#include<map>
#include<string>
using namespace std;

bool check(char c){
	if(c>='0'&&c<='9') return true;
	if(c>='a'&&c<='z') return true;
	if(c>='A'&&c<='Z') return true;
	return false;
}

int main(){
	map<string,int> count;
	string str;
	getline(cin,str);
	
	int pos=0;
	while(pos<str.length()){
		string word;
		while(pos<str.length()&&check(str[pos])==true){
			if(str[pos]>='A'&&str[pos]<='Z'){
				str[pos]+=32;
			}
			word+=str[pos];
			pos++;
		}
		if(word!=""){
			if(count.find(word)!=count.end()) count[word]++;
			else count[word] =1;
		}
		while(pos<str.length()&&check(str[pos])==false){
			pos++;
		}
	}
	string ans;
	int maxn=0;
	for(map<string,int>::iterator it=count.begin();it!=count.end();it++){
		if(it->second>maxn){
			ans=it->first;
			maxn=it->second;
		}
	}
	
	cout<<ans<<" "<<maxn<<endl;
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/aixiaoxiao13/article/details/121275865