7-1 字母统计图 (10 分)(思路+详解)

最后

由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。

image

本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。

image

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取








a b c d e f g h i j k l m n o p q r s t u v w x y z

二:思路

===================================================================

1.如何处理我们的数据,也就是统计每个字母的个数;在这里我选取的是map容器

利用map的一对一特性,统计每个字母的个数

2.那么如何显示出柱状图呢?首先我们将最大的字母个数求出来,利用for循环

那么我们就需要进行这么多次的输出,我进行递减输出(i–),然后在范围为26的for

循环当中判断字母在map容器是否存在 存在的话就判断 i小于等于某个字母的个数的时候,

接下来输出 * 否则就输出空格。如果map当中就无该字母也得输出空格,具体的格式要求

可以在PTA上的测试用例当中进行调试。

三:上码

===================================================================

/**

思路: 1.如何处理我们的数据,也就是统计每个字母的个数;在这里我选取的是map容器

利用map的一对一特性,统计每个字母的个数

2.那么如何显示出柱状图呢?首先我们将最大的字母个数求出来,利用for循环

那么我们就需要进行这么多次的输出,我进行递减输出(i–),当 i = 某个字母

的个数的时候,接下来就每次都输出 *

*/

#include//输入输出

#include//map容器

#include//sort函数

#include<math.h>//max和min等数学函数

using namespace std;

int main(){

map<char,int> m;

map<char,int>:: iterator mt;

char ch[26] = {‘a’,‘b’,‘c’,‘d’, ‘e’,‘f’,‘g’,‘h’,‘i’,‘j’,‘k’,‘l’,‘m’,‘n’,‘o’,‘p’,‘q’,‘r’,‘s’,‘t’,‘u’,‘v’,‘w’,‘x’,‘y’,‘z’};

int N;

cin >> N;

getchar();//读取换行符 (当cin 和 getline 同时用的时候)

for(int i = 0; i < N; i++) {

string str;

getline(cin,str);

// cout << str << endl;

for(int j = 0; j < str.size(); j++) {

if(str[j] == ’ ’ || str[j] == ‘-’ || str[j] == ‘.’ || isupper(str[j]))//isupper(str[i])如果是大写字母就跳过

continue;

m[str[j]] += 1;//统计每个字母的个数

}

}

int maxx = 0;

for(mt = m.begin(); mt != m.end(); mt++) {

maxx = max(maxx,mt->second);

//cout << mt->first << ’ ’ << mt->second << endl;

}

for(int i = maxx; i >= 1; i–) {

for(int j = 0; j < 26; j++) {

int flag = 0;

for(mt = m.begin(); mt != m.end(); mt++) {

if(ch[j] == mt->first) {

flag = 1;

if(i <= mt->second)

cout << “*”;

else

cout << " ";

}

}

if(flag == 0){//如果并无该字母就输出空格

cout << " ";

}

if(j != 25)

Ending

Tip:由于文章篇幅有限制,下面还有20个关于MySQL的问题,我都复盘整理成一份pdf文档了,后面的内容我就把剩下的问题的目录展示给大家看一下

如果觉得有帮助不妨【转发+点赞+关注】支持我,后续会为大家带来更多的技术类文章以及学习类文章!(阿里对MySQL底层实现以及索引实现问的很多)

吃透后这份pdf,你同样可以跟面试官侃侃而谈MySQL。其实像阿里p7岗位的需求也没那么难(但也不简单),扎实的Java基础+无短板知识面+对某几个开源技术有深度学习+阅读过源码+算法刷题,这一套下来p7岗差不多没什么问题,还是希望大家都能拿到高薪offer吧。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

源技术有深度学习+阅读过源码+算法刷题,这一套下来p7岗差不多没什么问题,还是希望大家都能拿到高薪offer吧。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 27
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值