统计字符数(POJ NO.1744)
总时间限制: 1000ms
内存限制: 65536kB
Quetion
描述
判断一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多输入
第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的字符串
每组测试数据之间有一个空行,每行数据不超过1000个字符且非空输出
n行,每行输出对应一个输入。一行输出包括出现次数最多的字符和该字符出现的次数,中间是一个空格。
如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符
样例输入
2
abbcccadfadffasdf
样例输出
c 3
f 4
My Hnits
Algorithm
此题主要考查对字符串的基本操作,只要先对字符串中的每个字符进行计数,然后找到数目最大者即可,别忘了还要根据数目最大找出对应的字母一并输出。
Codes
@ hzhang_97@foxmail.com
// Author: Florence
// Created Time: 2017-08-15 17:10:40
#include <iostream>
#include <cstring>
using namespace std;
int n;
string str;
int num[26],temp,ind;//num用来存放每个字符的个数
int main(int argc, char** argv) {
cin >> n;
for (int i = 0;i < n;i++){
cin >> str;
//用于接收每组测试数据之间的一个空行 ,清除缓存区,以免影响后面输入
cin.get();
//初始化num数组
for (int j = 0;j < 26;j++){
num[j] = 0;
}
//对strd中的字符逐个计数
for (string::size_type k = 0;k != str.size();k++){
num[str[k] - 'a'] += 1;
}
temp = num[0];
ind = 0;
//temp用来存放最多数目字符的个数,ind表示最多数目字符在num中对应的index
for (int j = 0;j < 26;j++){
if (temp < num[j]){
temp = num[j];
ind = j;
}
}
cout << static_cast<char>('a' + ind) << ' ' << temp << endl;
}
return 0;
}
本题考查字符串的基本应用,适合基础入门。