<!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>