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

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

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

    [LV.1]初来乍到

    18

    主题

    89

    帖子

    109

    积分

    中级工程师

    Rank: 5Rank: 5

    积分
    109
    发表于 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的每日心情
    开心
    4 天前
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    7

    主题

    191

    帖子

    146

    积分

    中级工程师

    Rank: 5Rank: 5

    积分
    146

    中秋纪念章猫咪币纪念章活跃会员热心会员三好学生

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

    使用道具 举报

  • TA的每日心情
    慵懒
    3 天前
  • 签到天数: 43 天

    [LV.5]常住居民I

    128

    主题

    1662

    帖子

    1866

    积分

    管理员

    Rank: 10Rank: 10Rank: 10

    积分
    1866

    猫咪币纪念章热心会员活跃会员突出贡献三好学生中秋纪念章国庆纪念章

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

    排序字符串再遍历
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。/ 微信公众号:一之哥哥
    回复

    使用道具 举报

    发表回复

    本版积分规则

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