网站首页 > 文章精选 正文
【题目描述】
给定一个由a-z这26个字符组成的字符串,统计其中哪个字符出现的次数最多。
【输入】
输入包含一行,一个字符串,长度不超过1000。
【输出】
输出一行,包括出现次数最多的字符和该字符出现的次数,中间以一个空格分开。如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符。
【输入样例】
abbccc
【输出样例】
c 3
解题思路
此题比较简单,是排序算法的入门题。a-z总共有26个字母,所以我们可以声明一个a[26]的数组,a[0]存储a出现的次数,a[1]存储b出现的次数,依次类推,a[25]存储z出现的次数。然后遍历字符串,将对应位的值+1。这里有个小技巧,可以通过一个index值记录出现最多次数字母的索引值,在遍历过程中,对其进行赋值,详细见代码中的注释。
参考答案
#include "iostream"
using namespace std;
int main(){
//创建数组,存储每个字母出现的次数(a存在索引为0的位置,b存储在1的位置,以此类推,z存储在25的位置)
int a[26] = {};
string c;
cin>>c;
int len = c.length();
//出现最多次数字母所在的数组索引位置
int index = 0;
for(int i=0;i<len;i++){
//字母出现次数+1
a[c[i]-'a']++;
//如果当前字母出现次数>已知的最多次数index位置的字母出现次数,则将index赋值为当前字母在a中的索引值
//或者如果当前字母出现次数=已知的最多次数index位置的字母出现次数,且当前字母在a中的索引值小于index的值,同样需要将index赋值为当前字母在a中的索引值(即取ascii码最小的那一个字符)
if(a[c[i]-'a'] > a[index] || (a[c[i]-'a']==a[index] && c[i]-'a'<index)){
index = c[i] - 'a';
}
}
//输出出现最多的字符和出现的次数
printf("%c %d",'a'+index,a[index]);
return 0;
}
猜你喜欢
- 2024-12-31 面试须知:通常都要知道的TCP、HTTP知识点
- 2024-12-31 excel函数——常用的字符串函数(二)
- 2024-12-31 小小的字符串,在PLC编程中不容小觑,到底有何特别 ?
- 2024-12-31 玩转Python—字符串使用教程
- 2024-12-31 vlookup的高阶用法——数据提取,不是很简单,但是很实用
- 2024-12-31 替换函数Substitute,用法大全,值得收藏备用
- 2024-12-31 Java基础面试:一文看懂String类中的常用方法
- 2024-12-31 老司机归纳-经典SQL语句(二)
- 2024-12-31 32767、8192、255在Excel中这三个数有什么含义?
- 2024-12-31 LeetCode5.2-动态规划求解最长回文子串
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)