博客
关于我
PAT乙级真题 1042 字符统计 C++实现
阅读量:616 次
发布时间:2019-03-13

本文共 1486 字,大约阅读时间需要 4 分钟。

要解决找出一段给定文字中出现最频繁的英国字母的问题,可以按照以下步骤编写程序:

  • 包含必要的头文件:需要访问标准输入流和字符分类函数,因此需要包含<iostream><cctype>头文件。

  • 初始化变量:创建一个大小为26的整数数组nums,用于记录每个英文字母的出现次数。同时,设置变量maxNum记录当前最大出现次数,maxIndex记录对应的字母位置。

  • 读取输入:使用getline函数读取完整输入行,s字符串包含所有字符,包括空格和字母。

  • 遍历字符串:对每个字符进行检查:

    • 使用isalpha函数判断是否为字母。
    • 将字符转换为小写字母,索引到nums数组中,更新计数。
    • 检查当前字母是否为出现次数最高的,或者在最高次数中字母序更小的,如果是,则更新最大值和索引。
  • 输出结果:根据最大值和索引找到对应的字母,输出字母及其出现次数。

  • 下面是优化后的完整代码:

    #include 
    #include
    #include
    #include
    using namespace std;int main() { string s; getline(cin, s); vector
    nums(26, 0); int maxNum = 0; int maxIndex = 26; // sqlite 类似于初始最大值 for (char c : s) { if (isalpha(c)) { // 检查是否为字母 char lower_c = tolower(c); // 转换为小写 int index = lower_c - 'a'; nums[index]++; if (nums[index] > maxNum) { maxNum = nums[index]; maxIndex = index; } else if (nums[index] == maxNum && index < maxIndex) { maxIndex = index; } } } char resultChar = 'a' + maxIndex; cout << resultChar << " " << maxNum << endl; return 0;}

    代码解释

    • 头文件包含:包含了必要的<iostream><cctype>,以便读取输入和处理字符。
    • 数组初始化vector<int> nums(26, 0);创建一个大小为26的整数数组,记录每个字母的出现次数。
    • 读取输入:使用getline读取完整输入行,包括空格。
    • 遍历字符:检查每个字符是否为字母,转换为小写后统计次数,并更新最大出现次数及对应的字母索引。
    • 结果输出:根据最大值和索引找到对应的字母,输出字母及其出现次数。

    注意事项

    • 该程序正确处理大小写,并统计英文字母的出现次数,不区分输入的大小写。
    • 表现形式递增字母顺序,确保在出现次数相同的情况下,输出字母序最小的。
    • 适用于输入长度不超过1000的情况,无需过多担心性能问题。

    转载地址:http://qkmaz.baihongyu.com/

    你可能感兴趣的文章
    08-docker系列-docker网络你了解多少(上)
    查看>>
    09-docker系列-docker网络你了解多少(下)
    查看>>
    1 解决XP重装后原文件夹拒绝访问
    查看>>
    10-docker系列-docker文件共享和特权模式
    查看>>
    #AMBA##AHB总线学习
    查看>>
    #C++# 关于 #ifdef __cplusplus extern “C“ { #endif
    查看>>
    #C2#S2.1# 一个简单的UVM验证平台
    查看>>
    #C2#S2.2~S2.3# 加入 factory/objection/virtual interface 机制
    查看>>
    #C8# UVM中的factory机制 #S8.1.1# OOP 语言三大特性 systemverilog的支持
    查看>>
    #C8# UVM中的factory机制 #S8.1.2# 到底重载?多态?
    查看>>
    #C8# UVM中的factory机制 #S8.1.3# UVM实战代码再剖析
    查看>>
    #C8# UVM中的factory机制 #S8.1.4# 约束的重载
    查看>>
    #C8# UVM中的factory机制 #S8.2.1# factory 机制重载法则
    查看>>
    #systemverilog# 之 event region 和 timeslot 仿真调度(三)概念
    查看>>
    #C8# UVM中的factory机制 #S8.2.2# 复杂重载方式
    查看>>
    #C8# UVM中的factory机制 #S8.2.3# 重载sequence哪些情形
    查看>>
    #C8# UVM中的factory机制 #S8.4.1# factory机制的实现
    查看>>
    #C8# UVM中的factory机制 #S8.4.3# factory机制创建实例接口
    查看>>
    #C8# UVM中的factory机制 #S8.5# 对factory机制的重载进一步思考
    查看>>
    #Day Day Plan# 《NCB_PCI_Express_Base 5.0.1.0》pdf 译文笔记 模版
    查看>>