在這么炎熱的夏天,求職卻成了一件我生活中很重要的‘工作’,在經歷幾次面試之后,心情一度低落。可是直到昨天面試下來,突然間發現自己的價值了,原來我也沒那么笨。好了不說了,我寫下我昨天的一道面試題:找出字符串中字符出現次數最多的字符,並計算次數?
(function( str ){ var arr = str.split(''); // 先把字符串切割成數組,因為要遍歷這個數組 var newArr = []; // 定義一個新的數組用來存放[{'letter':'a','count':1},{'letter':'s','count':4}....] 這樣的對象 for( var i=0;i<arr.length;i++ ){ var isExist = false; // 定義一個標記,判斷循環的當前字母在不在newArr數組的對應的對象里 for( var j =0; j < newArr.length;j++ ){ // 如果存在了就對應的count次數+1 if( arr[i] == newArr[j]['letter']){ newArr[j]['count'] += 1; isExsit = true; } } if(!isExist){ var obj = {'letter':arr[i],'count':1}; // 如果newArr里不存在對應的對象,就new一個新的對象push進去 newArr.push(obj); } } // 到這里,newArr就形成了想要的樣子[{‘letter’:'a','count':1},{‘letter’:'s','count':4}....] // 現在就是要找出‘count’的最大值,再找到對應的字母‘letter’ // 先假設是最大值是數組里的第一個 var max = newArr[0]['count'],maxLetter; // 再對newArr進行循環 for(var k = 0; k < newArr.length; k++ ){ if( newArr[k]['count'] > max ){ max = newArr[k]['count']; maxLetter = newArr[k]['letter']; } } console.log(max,maxLetter) // 在控制台打印的是 6 ‘d’ }('asdfgdfgdhdsdffsds'))
還好做出來了,這里的主要思路就是用對象和數組來存儲遍歷到的數據,就這樣吧,也不多說了!
