http://www.h5course.com/plus/view.php?aid=256
查找字符串中出現最多的字符
將一個字符串中,出現次數最多的數字提取出來,最后輸出出現最多的字符是什么,出現的次數是多少。
題目剖析
字符串方法的解題思路:從最初開始進行字符的截取,獲取到第一個字符之后,根據這個字符進行字符串的拆分,此時,拆分后的數組中就沒有這個字符了。再將數組組合成字符串之后,原來的長度與當前字符串的長度做差值,就能夠獲取到當前字符出現了幾次。之后運用新的字符串,循環進行操作。需要注意的地方就是,對於出現次數相同的字符,也需要考慮。
相關知識點的使用:字符串、數組方面,需要使用到charAt、split、join、push方法;正則方面,需要使用到子項。
1、字符串方法 - 查找字符串中出現最多的字符
/* * HTML5 數組字符串正則表達式 * HTML5學堂 http://www.h5course.com * 獨行冰海 夢幻雪冰 */ function getMost(str){ var maxNum = 0; var maxChar = []; //存放出現字數最多的字符數組,因為出現最多的字符可能有多個 while(str){ var char = str.charAt(0); var arr = str.split(char); n = str.length - arr.join('').length; str = arr.join(''); if(n > maxNum){ maxNum = n; maxChar = [char]; // 放置數組元素 }else if( n === maxNum){ maxChar.push(char); //出現次數相同的字符 存入數組里 } } return {'maxNum':maxNum, 'maxChar':maxChar} } var res = getMost('dsfshkgfareasfd'); console.log('出現次數最多的字符:'+ res.maxChar + ',出現次數:' + res.maxNum);
2、正則方法 - 查找字符串中出現最多的字符
/* * HTML5 數組字符串正則表達式 * HTML5學堂 http://www.h5course.com * 獨行冰海 夢幻雪冰 */ var str = 'dsfshkgfareasfd'; var arr = str.split(''); arr = arr.sort(); str = arr.join(''); // 先進行排序處理,然后重新組裝成字符串 var reg = /(\w)\1+/g; var num = 0; var value = null; str.replace(reg, function($0, $1){ if (num < $0.length) { num = $0.length; value = $1; }; }); console.log(value+'出現次數'+num);
3、自己寫的
function maxArray(arr){ var map={}; for(var i=0; i<arr.length;i++){ map[arr[i]]? map[arr[i]]+= 1: map[arr[i]] =1; } var max = 0; var maxItem=[]; for(var i in map){ if(map[i] >= max){ if(map[i] === max) maxItem.push(i); max = map[i]; } } return maxItem; }