当前位置:网站首页>删除字符串中出现次数最少的字符【JS,Map排序,正则】
删除字符串中出现次数最少的字符【JS,Map排序,正则】
2022-07-04 17:16:00 【qq_22841387】
问题描述
删除字符串中出现次数最少的字符_牛客题霸_牛客网 (nowcoder.com)
题目几个重点
- 删除所有次数为最少的字符
- 保证原来序列
解决代码
var value = readline();
let strMap = new Map();
let singleValue , cnt;
let i = 0 ;
while(value[i]){
singleValue = value[i];
if(strMap.has(singleValue)){
cnt = strMap.get(singleValue);
cnt ++;
strMap.set(singleValue , cnt);
}else{
strMap.set(singleValue , 1);
}
i ++;
}
let arr = Array.from(strMap)
// console.log(Math.min(...arr))
arr.sort((a , b) => {
return a[1] - b[1];
})
let minNum = arr[0][1];
let key
for(const item of strMap ){
key = item[0]
if(strMap.get(key) === minNum){
const reg = new RegExp(key , 'g')
value = value.replace(reg,'');
}
}
console.log(value);
刷题总结
1.初始化各个字符个数
直接通过while循环遍历value原始字符串,while(value[i])
,因为value对应位置i不存在是会以undefined
存在,while中会自动转换成boolean类型的值,对应的undefined的就是falsy(假值)
- 判断是否
map
中是否存在- 若存在,对应的数字++
- 若不存在,则通过set设置值
while(value[i]){
singleValue = value[i];
if(strMap.has(singleValue)){
cnt = strMap.get(singleValue);
cnt ++;
strMap.set(singleValue , cnt);
}else{
strMap.set(singleValue , 1);
}
i ++;
}
2.map排序
map排序大致思想:通过转换成数组,调用数组的sort,并重写sort默认排序规则
- 将map转换为数组
let arr = Array.from(map类型的变量)
- 重写数组排序规则
按value排序——降序
arr.sort( ( a , b) => {
return a[1] - b[1];
})
按key排序
arr.sort( ( a , b ) => {
return a[0] - b[0]
})
3.replace替换所有——正则
由于牛客不支持replaceAll方法,所以需要自己实现一个。
而且题目中要求删除所有最小值,所以我们需要对map进行循环遍历
,通过排序找到最小值
后,判断每一个key的value是否与最小值相等
若相等,对原串进行替换
if(strMap.get(key) === minNum){
const reg = new RegExp(key , 'g');
value = value.replace(reg,'');
}
这里也有几个小知识点
- 正则全局删——
/g
- 删除value中的值——
replace(reg ,'')
- replace返回替换的字符串
边栏推荐
- [cloud native] what is the "grid" of service grid?
- 爬虫初级学习
- 力扣刷题日记/day5/2022.6.27
- Basic tutorial of scala -- 16 -- generics
- The block:usdd has strong growth momentum
- How to improve development quality
- Scala基础教程--18--集合(二)
- Scala basic tutorial -- 14 -- implicit conversion
- 激进技术派 vs 项目保守派的微服务架构之争
- 爬虫(6) - 网页数据解析(2) | BeautifulSoup4在爬虫中的使用
猜你喜欢
Just today, four experts from HSBC gathered to discuss the problems of bank core system transformation, migration and reconstruction
基于unity的愤怒的小鸟设计
[HCIA continuous update] network management and operation and maintenance
Reptile elementary learning
Behind the ultra clear image quality of NBA Live Broadcast: an in-depth interpretation of Alibaba cloud video cloud "narrowband HD 2.0" technology
【2022年江西省研究生数学建模】冰壶运动 思路分析及代码实现
I wrote a learning and practice tutorial for beginners!
uni-app与uviewUI实现仿小米商城app(附源码)
基于C语言的菜鸟驿站管理系统
Scala基础教程--16--泛型
随机推荐
Scala基础教程--16--泛型
一直以为做报表只能用EXCEL和PPT,直到我看到了这套模板(附模板)
技术分享 | 接口测试价值与体系
.NET ORM框架HiSql实战-第二章-使用Hisql实现菜单管理(增删改查)
Load test practice of pingcode performance test
MXNet对GoogLeNet的实现(并行连结网络)
Basic tutorial of scala -- 16 -- generics
PB的扩展DLL开发(超级篇)(七)
2022年字节跳动日常实习面经(抖音)
Li Kou brush question diary /day6/6.28
[HCIA continuous update] network management and operation and maintenance
Torchdrug tutorial
. Net ORM framework hisql practice - Chapter 2 - using hisql to realize menu management (add, delete, modify and check)
Lua emmylua annotation details
一种将Tree-LSTM的强化学习用于连接顺序选择的方法
完善的js事件委托
VMware Tools和open-vm-tools的安装与使用:解决虚拟机不全屏和无法传输文件的问题
[HCIA continuous update] WAN technology
工厂从自动化到数字孪生,图扑能干什么?
Is it safe to open an account online? is that true?