题目描述:
从键盘输入一行英文句子,句子中只有英文单词和空格,每个单词之间由若干个空格隔开, 英文单词由大小写字母组成,编程完成下列任务:
(1)统计并输出此句子中英文字母的个数; (10 分)
(2)统计并输出此句子中单词的个数; (10 分)
(3)查找此句子中出现次数最多的字母(不区分大小写,大小写字母是相同的)和次数。 当出现最多的字符不止一个时,都能找到,并输出找到的所有字母及次数。(输出字母时大小写 均可) (20 分)
例如:
输入
This is An Pencil Case
输出
字母个数:18
单词个数:5
最多的字母:i,s
出现的次数:3
这题有一个地方我开始没看到,就是不区分大小写,这就使我开始写的代码在统计时区分了大小写,既然如此,就分别考虑,两种情况吧!
当不区分大小写时:
1.我用的vector容器,自定义一个Record结构体,记录字符c和次数num
2.用暴力的方法,从头开始扫描,每扫描一个单词,就进入二层循环,扫描后面的单词是否有相同的,相同计数加1,且标记为‘#’,代表已经扫描,后面再遇到时就跳过
代码:
typedef struct Record{
char c;
int num;
Record(char a,int b):c(a),num(b){
}
}Record;
int main(){
string s;
getline(cin,s);
vector<Record> vec;
int whitenum=0;
int letternum=0;
int iflastwhite=1;
for(int i=0;i<s.length();i++){
if(s[i]==' '){
whitenum++;
iflastwhite=1;
}