最近面試總是刷到這個題,然后第一次的話思路很亂,這個是我個人思路 for循環里兩個 if 判斷還可以優化
var maxLength = 0; var maxStr = ''; var count = 1; var stringList = 'adsafsfgadsdaasssssaasssdfssss'; // 首先對字符串進行排列,方便比較 stringList = stringList.split('').sort(); // 比較字符串相鄰位置是否相同 for (let i = 0; i < stringList.length; i++) { // 如果相同,說明字符串相同,讓count +1 if (stringList[i] == stringList[i + 1]) { ++ count; // maxLength是最大的出現個數,如果相鄰個數大於maxLength則說明字符串個數比定義的最大個數大,則最大個數設置為它,最大值為單前的值 if (count > maxLength) { console.log(count); maxLength = count; maxStr = stringList[i]; } } else { count = 1 } } console.log(‘出現次數最多’+maxStr,'出現次數最多個數' + maxLength);
這是我個人的想法,然后第二種方法就是利用對象的key值不能重復這一特性實現
function maxstringload(str) { var obj={}; for(var i=0;i<str.length;i++){ var key=str[i];//key中存儲的是每一個字符串 if(obj[key]){//判斷這個鍵值對中有沒有這個鍵 obj[key]++; }else{ obj[key]=1; } } var maxCount=0;//假設是出現次數最多的次數 var maxString="";//假設這個字符串是次數出現最多的字符串 for(var key in obj){ if(maxCount<obj[key]){ maxCount=obj[key];//保存最大的次數 maxString=key; } } return "出現次數最多的字母:"+maxString+"出現了"+maxCount+"次"; } console.log(maxstringload(stringList))
兩個方法都可實現判斷一個字符串中出現次數最多的字符及次數