北理工2011年计算机复试上机题(一)

题目描述:

输入一组单词(区分大小写),统计首字母相同的单词个数,相同的单词不累加,输出格式“字母,以该字母为首的单词个数。

 

代码:

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>

using namespace std;

int main()
{
	vector<string> str;
	string s,temp;
	char c;
	int i,j,count;

	i=0;
	j=0;
	count=0;

	while(cin>>s)
	{
		str.push_back(s);
	}
	//先排序
	sort(str.begin(),str.end());

	//找到重复单词
	vector<string>::iterator end_unique=unique(str.begin(),str.end());

	//把重复单词全部删除
	str.erase(end_unique,str.end());

	//下面开始统计首字母一样的单词

	for( i=0;i<str.size();i++)
	{
		c=str[i][0];

		count++;

		for(j=i+1;j<str.size();j++)
		{
			if(str[j][0]==c)
			{
				count++;
				continue;
			}
			else
			{
				i=j-1;
				break;
			}
			
		}

		cout<<c<<":"<<count<<endl;

		count=0;
	}
	
	system("pause");
	return 0;
}


 

说明:

此题注意unique 函数和erase函数的使用,确保单词不重复,容器实现应该是最快的

 

你可能感兴趣的:(北理工2011年计算机复试上机题(一))