在这么炎热的夏天,求职却成了一件我生活中很重要的‘工作’,在经历几次面试之后,心情一度低落。可是直到昨天面试下来,突然间发现自己的价值了,原来我也没那么笨。好了不说了,我写下我昨天的一道面试题:找出字符串中字符出现次数最多的字符,并计算次数?
(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'))
还好做出来了,这里的主要思路就是用对象和数组来存储遍历到的数据,就这样吧,也不多说了!