当前位置:网站首页>第一次写对牛客的编程面试题:输入一个字符串,返回该字符串出现最多的字母
第一次写对牛客的编程面试题:输入一个字符串,返回该字符串出现最多的字母
2022-08-02 01:01:00 【MOAN.】
这里备战秋招的小M
今天重拾信心,挑战了一道简单的算法题(源于牛客,链接已贴上)。大家可以先思考一下
统计一个字符串出现最多的字母__牛客网 (nowcoder.com)
在半个小时的coding后,我发现为啥在vsCode中都ok,但是怎么输入进去就一直报错啊 !!!!慢慢的陷入了沉思,开始逐渐抓狂 !!!
终于 在不断的思考后我睡着了
第二天,在挣扎中起床,打开电脑,熟练的点开牛客,一键查看解析
在我的不断尝试下,还是一个测试案例都通不过
在我的不懈努力下,发现了在线编程题的coding“秘密”
为啥我在vscode中代码是对的,但输入在线编辑器就报错
前提:代码逻辑正确
首先,不要以函数的形式输入进去,就直接将逻辑代码写入即可
那我怎么写测试参数呢
这就是我发现的最重要的秘密:readline();
//获取输入字符串``
这样就可以直接获得在线编辑器的测试数据啦
like this
let str = readline();//获取输入字符串
如果是固定好的测试数据,就只能输入固定的答案,所以通不过测试用例
let str = 'aaccc' 我之所以报错的原因之一就是这样干的
其次,记得一定要输入答案哈
解题思路
再来看下题目,也就是输入aab=> a , aaccc=>c , aabbcccddddd => d
道理咱都懂,对我我这种算法小小小小小白而言,第一次想到的是 下标计数法
但是明显是行不通的
思路:
1.处理字符串,将字符串转化为数组去遍历每一个字符(split()将字符串分割为数组)
2.新建一个map对象存储每一个字符key和出现次数value(相当于一个计数器)
3.for循环遍历(用for…in也是可以的),并判断map的key中是否存在当前的字符,存在则value+1;不存在则set一个,value设为0
4.获取map的value中的最大值(通过循环,找到最大值的同时获得key)
在这个地方我最开始我的思路出现了错误,我想直接用Math.max()直接获取values的最大值就一步到位了,但是我去拿到对应的key好像更麻烦
Math.max(...map.values())
5.输出
代码
let str = readline();//获取输入字符串
const map=new Map()//计数器
let arr = str.split('') //将字符串分割为数组
for(let i = 0 ; i < arr.length;i++){
let val =map.get(arr[i])
if(val){
map.set(arr[i],val+1)
}else{
map.set(arr[i],1)
}
}
let max=0; //最大值
let key
map.forEach((v,k) => {
if(max<v){
max=v
key=k
}
})
console.log(key)
其实代码这样写也是对的,但是注意在线编辑器的一些特点
let str = 'aabbbccccc'
function countCase(str){
//计数器
let map=new Map()
let str2 = str.split('')
for(let i = 0 ; i < str2.length;i++){
let val =map.get(str2[i])
if(val){
map.set(str[i],val+1)
}else{
map.set(str[i],1)
}
}
let max=0;
let key
map.forEach((v,k) => {
if(max<v){
max=v
key=k
}
})
// console.log(key);
return key
}
console.log(countCase(str))
小小小小白什么时候能变成算法小白呢
如果有不对的地方,欢迎指导
转载:欢迎转载,但未经作者同意,必须保留此段声明;
边栏推荐
猜你喜欢
S/4中究竟有多少个模块,你对这些模块了解多少
傅立叶变换相关公式
Docker安装canal、mysql进行简单测试与实现redis和mysql缓存一致性
flv.js解析与使用
Can‘t connect to MySQL server on ‘localhost3306‘ (10061) 简洁明了的解决方法
交返是做日内交易的必要条件
ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)
期货开户手续费加一分是主流
Flask gets post request parameters
Redis和MySQL数据一致性问题,有没有好的解决方案?
随机推荐
Interview: Briefly describe a project you are involved in
iframe使用
IDEA版Postman插件Restful Fast Request,细节到位,功能好用
GateWay实现负载均衡
管理基础知识20
23.卷积神经网络实战-ResNet
FlinkSQL CDC实现同步oracle数据到mysql
Navicat数据显示不完全的解决方法
datagrip 报错 “The specified database userpassword combination is rejected...”的解决方法
Kubernetes — Calico
dbeaver连接MySQL数据库及错误Connection refusedconnect处理
百度、百图生科 | HelixFold-Single: 使用蛋白质语言模型作为替代进行无MSA蛋白质结构预测
H5页面调用微信授权获取code
期货公司开户实力经纪业务的规模
Pytorch seq2seq model architecture to achieve English translation tasks
网络请求技术--跨域
Reflex WMS中阶系列6:对一个装货重复run pick会有什么后果?
go泛型使用方法
管理基础知识19
Kubernetes — Flannel