前端算法之每日一更(求一段英文字符串的中,出现次数最多的字母,和该字母出现的次数)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="content-type" content="text/html" />
        <meta name="keywords" content="统计一个字符串出现最多的字母和出现的次数" />
        <meta name="description" content="统计一个字符串出现最多的字母和出现的次数" />
        <meta name="author" content="KG" />
        <link rel="shortcut icon" href="favicon.icon" />
        <title>census</title>
    </head>
    <style>
        .census{
             400px;
            margin: 400px auto;
            box-shadow: 0px 0px 15px 0px #000;
            padding: 30px;
            border-radius: 8px;
        }
    </style>
    <body>
        <!-- 统计一个字符串出现最多的字母和出现的次数 -->
        <div class="census">
            <input name="inputText" type="text" value="" placeholder="请输入一个字母字符串" />
            <input type="button" value="统计" onclick="resultFnc()" />
            <h4>信息展示:</h4>
            <div class="showMsg"></div>
        </div>
        <script>
            // 获取input框输入的值
            function getInputValue(){
                var txt=document.getElementsByName('inputText');
                var targetVal=txt[0].value;
                return targetVal;
            }
            // 对字符串进行统计
            function censusStr(){
                var targetStr=getInputValue();
                var strArr=[];
                strArr=targetStr.split('');
                // bubbleSort(strArr);
                return strArr;
            }
            
            // 对所得的数组进行去重处理,这里需要注意,数组中的indexOf方法
            //去重思路:设置一个新数组,对这个数组使用indexOf查找字符串,第一次出现的字符串,放到数组的后面;
            function duplicateRemoval(){
                let targetArr=censusStr();
                let duplicateRemovalArr=[];
                // 去重
                for(var i=0;i<targetArr.length;i++){
                    if(duplicateRemovalArr.indexOf(targetArr[i])==-1){
                        duplicateRemovalArr.push(targetArr[i]);
                    }
                }
                return duplicateRemovalArr;
            }
            
            //统计重复的字符串
            function censusMaxNum(){
                let duplicateRemovalArr=duplicateRemoval();
                let targetArr=censusStr();
                let countArr=[];
                for(var i=0;i<duplicateRemovalArr.length;i++){
                    let count=0;
                    for(var j=0;j<targetArr.length;j++){
                         if(duplicateRemovalArr[i]===targetArr[j]){
                             count++;
                         }
                    }
                    countArr.push(count)
                }
                return countArr;
            }
            
            // 找出字符串中,最大的值
            function findMax(){
                let censusMaxNumArr=censusMaxNum();
                for(var i=0;i<censusMaxNumArr.length;i++){
                    for(var j=0;j<censusMaxNumArr.length-1-i;j++){
                        if(censusMaxNumArr[j]>censusMaxNumArr[j+1]){
                            let temp=censusMaxNumArr[j];
                            censusMaxNumArr[j]=censusMaxNumArr[j+1];
                            censusMaxNumArr[j+1]=temp;
                        }
                    }
                }
                return censusMaxNumArr[censusMaxNumArr.length-1]
            }
            
            
            
            // 最终结果
            function resultFnc(){
                let duplicateRemovalArr=duplicateRemoval();
                let censusMaxNumArr=censusMaxNum();
                let maxNumber=findMax();
                let showMsg=document.getElementsByClassName('showMsg')[0];
                
                // 找出最大值对应的索引
                let maxNumberIndex=censusMaxNumArr.indexOf(maxNumber);
                
                let _html='';//计算数据展示
                
                _html='<p>'+'该字符串出现最多的字母是:'+duplicateRemovalArr[maxNumberIndex]+',该字符串出现'+duplicateRemovalArr[maxNumberIndex]+'的次数:'+censusMaxNumArr[maxNumberIndex]+'</p>';
                
                
                
                // 全部罗列出来
                // 
                // for(var i=0;i<duplicateRemovalArr.length;i++){
                //     // 该字符串出现最多的字母是:mm
                //     _html+='<p>'+'该字符串出现字母和个数是:'+duplicateRemovalArr[i]+':'+censusMaxNumArr[i]+'</p>';
                // }
                
                showMsg.innerHTML=_html;
            }
            
            // 冒泡排序
            // 设计思路,相邻的两个数互相比较,大的往后移动,继续和后面的数比较,最后,一轮比较的次数是,arr.length-1次;每次比较完一轮,都会把这一轮最大的数放在数组的最后一位
            // 所以就有了arr.length-1-i;
            // function bubbleSort(arr){
            //     for(var i=0;i<arr.length;i++){   //冒泡排序
            //         for(var j=0;j<arr.length-1-i;j++){
            //             // 前后两个值作比较
            //             if(arr[j]-arr[j+1]>0){
            //                 let smallerNum=arr[j+1];
            //                 arr[j+1]=arr[j];
            //                 arr[j]=smallerNum;
            //             }
            //         }
            //     }
            //     return arr;
            // }
        </script>
    </body>
</html>
原文地址:https://www.cnblogs.com/nimon-hugo/p/12674863.html