上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

求字符串中出现次数最多的字符和出现的次数,你会几种

[复制链接]
  • TA的每日心情
    开心
    2022-3-7 09:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    22

    主题

    104

    回帖

    170

    积分

    中级工程师

    积分
    170
    发表于 2022-2-22 16:03:41 | 显示全部楼层 | 阅读模式
    1. //求字符串中出现次数最多的字符和出现的次数
    2. // 1.通过字符串的replace方法,通过正则匹配到字符并且置为空
    3. //  通过得到新字符与旧字符的长度差计算出某个字符出现的次数
    4. //  通过while循环挨个取首字符进行上述操作比较  
    5.   function getMaxCount1(str){
    6.     let MaxCount=0
    7.     let MaxCountChar=''
    8.     while(str){
    9.      let src_len=str.length
    10.      let char=str[0]
    11.      const reg=new RegExp(char,'g')
    12.      str=str.replace(reg,'')
    13.      let replaced_len=str.length   
    14.      let count=src_len -replaced_len
    15.      if(count > MaxCount){
    16.        MaxCount=count
    17.        MaxCountChar=char
    18.      }
    19.      if(count==MaxCount&&MaxCountChar!=char){
    20.        MaxCountChar+=`,${char}`
    21.      }

    22.     }
    23.     return `出现最多次数的字符为: ${MaxCountChar},出现次数为: ${MaxCount}`

    24.   }

    25.   // 2.(1)字符串处理成一个数组,先调用sort()排序,再转化成字符串
    26.   //   (2)遍历每个字符,调用lastIndexof()方法,与该字符的indexof方法比较
    27.   //   (3)与最大的次数maxCount进行比较,如果maxCount大,就更新

    28.   function getMaxCount2(str){
    29.     let MaxCount=0
    30.     let MaxCountChar=''
    31.     let process_str=str.split('').sort().join('')
    32.     for(let i=0;i<process_str.length;i++){
    33.       let char=process_str[i]
    34.       let start=process_str.indexOf(char)
    35.       let end=process_str.lastIndexOf(char)
    36.       let count=end-start +1
    37.       i=end
    38.       if(count > MaxCount){
    39.         MaxCount=count
    40.         MaxCountChar=char
    41.       }
    42.       if(count==MaxCount&&MaxCountChar!=char){
    43.         MaxCountChar+=`,${char}`
    44.       }
    45.     }
    46.     return `出现最多次数的字符为: ${MaxCountChar},出现次数为: ${MaxCount}`
    47.   }

    48.   //key-value
    49.   function getMaxCount3(str){
    50.     let MaxCount=0
    51.     let MaxCountChar=''
    52.     let obj={

    53.     }
    54.     for(let i=0;i<str.length;i++){
    55.       let char=str[i]
    56.       if(!obj[char]){
    57.         obj[char]=1
    58.       }else{
    59.         obj[char]++
    60.       }
    61.     }
    62.     for(let key in obj){
    63.       if(obj[key]>MaxCount){
    64.         MaxCount=obj[key]
    65.         MaxCountChar=key
    66.       }
    67.       if(obj[key]==MaxCount&&MaxCountChar!=key){
    68.         MaxCountChar+=`,${key}`
    69.       }
    70.     }
    71.     return `出现最多次数的字符为: ${MaxCountChar},出现次数为: ${MaxCount}`
    72.   }
    73.   console.log(getMaxCount1('aacbbaccd'))
    74.   console.log(getMaxCount2('aadddaacacccc'))
    75.   console.log(getMaxCount3('kkkkjlloojojojo'))
    复制代码


  • TA的每日心情
    开心
    2024-7-30 00:00
  • 签到天数: 122 天

    [LV.7]常住居民III

    29

    主题

    601

    回帖

    542

    积分

    专家

    积分
    542

    油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2022-2-22 20:01:26 | 显示全部楼层
    好使的!哥哥棒棒,哥哥我还要
    回复

    使用道具 举报

  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2022-2-23 09:47:10 | 显示全部楼层
    万能map

    排序字符串再遍历
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表