TA的每日心情 | 开心 2022-3-7 09:47 |
---|
签到天数: 1 天 [LV.1]初来乍到
中级工程师
- 积分
- 170
|
- //求字符串中出现次数最多的字符和出现的次数
- // 1.通过字符串的replace方法,通过正则匹配到字符并且置为空
- // 通过得到新字符与旧字符的长度差计算出某个字符出现的次数
- // 通过while循环挨个取首字符进行上述操作比较
- function getMaxCount1(str){
- let MaxCount=0
- let MaxCountChar=''
- while(str){
- let src_len=str.length
- let char=str[0]
- const reg=new RegExp(char,'g')
- str=str.replace(reg,'')
- let replaced_len=str.length
- let count=src_len -replaced_len
- if(count > MaxCount){
- MaxCount=count
- MaxCountChar=char
- }
- if(count==MaxCount&&MaxCountChar!=char){
- MaxCountChar+=`,${char}`
- }
- }
- return `出现最多次数的字符为: ${MaxCountChar},出现次数为: ${MaxCount}`
- }
- // 2.(1)字符串处理成一个数组,先调用sort()排序,再转化成字符串
- // (2)遍历每个字符,调用lastIndexof()方法,与该字符的indexof方法比较
- // (3)与最大的次数maxCount进行比较,如果maxCount大,就更新
- function getMaxCount2(str){
- let MaxCount=0
- let MaxCountChar=''
- let process_str=str.split('').sort().join('')
- for(let i=0;i<process_str.length;i++){
- let char=process_str[i]
- let start=process_str.indexOf(char)
- let end=process_str.lastIndexOf(char)
- let count=end-start +1
- i=end
- if(count > MaxCount){
- MaxCount=count
- MaxCountChar=char
- }
- if(count==MaxCount&&MaxCountChar!=char){
- MaxCountChar+=`,${char}`
- }
- }
- return `出现最多次数的字符为: ${MaxCountChar},出现次数为: ${MaxCount}`
- }
- //key-value
- function getMaxCount3(str){
- let MaxCount=0
- let MaxCountChar=''
- let obj={
- }
- for(let i=0;i<str.length;i++){
- let char=str[i]
- if(!obj[char]){
- obj[char]=1
- }else{
- obj[char]++
- }
- }
- for(let key in obj){
- if(obj[key]>MaxCount){
- MaxCount=obj[key]
- MaxCountChar=key
- }
- if(obj[key]==MaxCount&&MaxCountChar!=key){
- MaxCountChar+=`,${key}`
- }
- }
- return `出现最多次数的字符为: ${MaxCountChar},出现次数为: ${MaxCount}`
- }
- console.log(getMaxCount1('aacbbaccd'))
- console.log(getMaxCount2('aadddaacacccc'))
- console.log(getMaxCount3('kkkkjlloojojojo'))
复制代码
|
|