1071 Speech Patterns 需再做

Posted CSU迦叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1071 Speech Patterns 需再做相关的知识,希望对你有一定的参考价值。

1. alphanumerical 的意思是字母数字混合编制的,也就是一句话中被认为是“单词”的组成成分的有数字和字母。这也是为什么例句中can1不被认为是can。

由于这道题对大小写不敏感,不妨在读入后,把大写字母全部改成小写

//大写换小写 
for(int i=0;i<len;i++){
	if(sen[i]>='A'&&sen[i]<='Z')sen[i] += 32;
}

封装一个函数判断单词是否是合法的,即在[a,z]和[0,9]范围内

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

2. 知道了单词的组成,本题的关键是如何分词,怎样在句子中取出单词呢?用一个指针变量i,令其小于句子的长度,读到第一个合法字符是开始加入单词,一直到读到第一个非法字符结束,重复这个过程。读到非法字符时不断更新i,直至读到下一个合法字符。

int i = 0;
	string word;
	
	while(i<len){
		
		while(i<len&&isValid(sen[i])){
			word += sen[i];
			i++;
		}
		
		if(word.length()){
			if(!mp[word])mp[word] = 1;//原先没有这个单词 
			else mp[word]++;
		}

		word.clear();//清空字符串
		
		while(i<len&&!isValid(sen[i]))i++;//跳过无效的字符 
			
	}

3. 注意单词要判空。

4. 并不需要一个集合来存放单词,map本身就有迭代器。

AC代码

#include<cstdio>
#include<map>
#include<set>
#include<string>
#include<cstring>
#include<iostream>

using namespace std;



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


int main(){
	
	map<string,int> mp;
	string sen;
	getline(cin,sen);
	int len = sen.length();
	
	//大写换小写 
	for(int i=0;i<len;i++){
		if(sen[i]>='A'&&sen[i]<='Z')sen[i] += 32;
	}
	
	int i = 0;
	string word;
	
	while(i<len){
		
		while(i<len&&isValid(sen[i])){
			word += sen[i];
			i++;
		}
		
		if(word.length()){
			if(!mp[word])mp[word] = 1;//原先没有这个单词 
			else mp[word]++;
		}

		word.clear();//清空字符串
		
		while(i<len&&!isValid(sen[i]))i++;//跳过无效的字符 
			
	}
	
	map<string,int>::iterator it;
	int count = 0;
	string str;
	
	for(it=mp.begin();it!=mp.end();it++){
		if(it->second>count){
			count = it->second;
			str = it->first;		
		}	
	}
	
	cout<<str<<" "<<count<<endl; 
	
	
	return 0;
}

以上是关于1071 Speech Patterns 需再做的主要内容,如果未能解决你的问题,请参考以下文章

1071 Speech Patterns (25)

1071. Speech Patterns (25)

PAT Advanced 1071 Speech Patterns (25分)

PATA 1071 Speech Patterns.

1071 Speech Patterns

PAT (Advanced Level) 1071. Speech Patterns (25)