判断字符串中出现次数最多的字符的俩种方法...

510 阅读2分钟

方法一:

思路分析:
1.先用分隔符把字符串转成数组,然后排序
2.声明三个初始值
3.循环这个数组
4.因为排过序,只有不同字母才会使 arr[i]==arr[i+1]不相等,所以n++
5.字母不同就做这次字母次数和上次字母的次数对比筛选/赋值
6.恢复次数的初始值
  let str = 'assdasdnasdaasdasc'
        let arr = str.split('').sort() //先用分隔符把字符串转成数组,然后排序
        console.log(arr) 
        let mex = 0  //声明三个初始值
        let mexs = ''
        let n = 1 
        for (let i=0 ;i<arr.length; i++){ //循环这个数组
            if(arr[i]==arr[i+1]){ //因为排过序,只有不同字母才会使 arr[i]==arr[i+1]不相等,所以n++
                n++
            }else{
                if(n>mex){ //字母不同就做这次字母次数和上次字母的次数对比筛选/赋值
                    mex = n
                    mexs = arr[i]
                }
                n=1 //恢复次数的初始值
            }
        }
        console.log(mex,mexs) // 6 'a'

方法二:

思路分析:
    1.声明一个空对象
    2.循环这个字符串
    3.声明一个变量接收字符串中每一个字母
    4.做判断利用中括号查询语法,如果能在对象中查到这个属性,这个属性值就+1,没有就添加这个属性值等于1
    5.声明俩个变量接收出现最多的次数和字母
    6.循环这个对象
    7.中括号查询语法筛选出出现最多的次数,赋值给变量
    
   const str = 'aaaaasddddasassawwwwfxzczxczxassaassaassaas'
   let o = {} //声明一个空对象
   for (let i = 0; i < str.length; i++) { //循环这个字符串
       let name = str[i] //声明一个变量接收字符串中每一个字母
       if(o[name]){
           o[name]++ //做判断利用中括号查询语法,如果能在对象中查到这个属性,这个属性值就+1,没有就添加这个属性值等于1
       }else{
        o[name] = 1
    }
   }
   let mex = 0 //声明俩个变量接收出现最多的次数和字母
   let mexs = ''
   for (let key in o) { //循环这个对象
       if (mex < o[key]) { //中括号查询语法筛选出出现最多的次数,赋值给变量
           mex = o[key]
           mexs = key 
       }
   }
   console.log(mex,mexs) // 15 'a'