Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

典型水题,不过偷懒用了STL效率略低,16ms

Posted by KatrineYang at 2017-01-20 14:25:56 on Problem 1583
#include <iostream>
#include <stdio.h>
#include <string>
#include <map>
#include <algorithm>
#include <vector>
using namespace std;

char toL(char c){
	if((c>='a' && c<='z') || (c>='0' && c<='9')) return c;
	if(c>='A' && c<='Z') return c-'A'+'a';
	return '\0';
}

int main() {
	int mx = 0;
	map<string, int> sim;
	bool inWord = false;
	string tmpWord;
	int nc;
	while((nc = getchar()) != EOF){
		if(!inWord){
			char tol = toL((char)nc);
			if(tol){
				inWord = true;
				tmpWord += tol;
			}
		}
		else{
			char tol = toL((char)nc);
			if(tol){
				tmpWord += tol;
			}
			else{
				inWord = false;
				map<string,int>::iterator it = sim.find(tmpWord);
				if(it != sim.end()){
					it->second++;
					if(mx < it->second) mx = it->second;
				}
				else{
					sim.insert(pair<string,int>(tmpWord,1));
					if(!mx) mx = 1;
				}
				tmpWord = "";
			}
		}
	}
	if(inWord){
		map<string,int>::iterator it = sim.find(tmpWord);
		if(it != sim.end()){
			it->second++;
			if(mx < it->second) mx = it->second;
		}
		else{
			sim.insert(pair<string,int>(tmpWord,1));
			if(!mx) mx = 1;
		}
	}
	vector<string> vs;
	for(map<string,int>::iterator it = sim.begin(); it != sim.end(); it++){
		if(it->second == mx){
			vs.push_back(it->first);
		}
	}
	sort(vs.begin(), vs.end());
	cout << mx << " occurrences" << endl;
	int sz = vs.size();
	for(int i = 0; i < sz; i++){
		cout << vs[i] << endl;
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator