每日一题
去除字符串中出现次数最少的字符,不改变原字符的顺序。实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数最少的字符都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
思路
- 通过forEaech来统计字符个数
- 找出最少的字符的个数
- 将最少的字符组成数组
- 正则全局替换掉出现最少得字符
javascript
let c = 'accacddaddbb';
let arr = c.split('');
let crrute = {};
/*通过forEaech来统计字符个数*/
arr.forEach((item)=>{
if(!crrute[item]){
crrute[item] = 1;
}else{
crrute[item] += 1;
}
})
/*通过reduce来统计字符个数*/
// crrute = arr.reduce((acc,curr) => {
// acc[curr] ? acc[curr] += 1 : acc[curr] = 1
// return acc
// },{})
//console.log(crrute);
/*找出最少的字符的个数*/
let valus = Object.values(crrute)
let result = valus.reduce((acc, curr)=>{
return Math.min(acc,curr);
},Infinity);
/*将最少的字符组成数组*/
let keyArr = [];
for (key in crrute){
if(result == crrute[key]){
keyArr.push(key)
}
}
/*正则全局替换掉出现最少得字符*/
let n = '';
keyArr.forEach((item)=>{
n = c.replace(new RegExp(item, 'g'),'')
c = n;
})
console.log(c);