算法积累(字符串转换驼峰,判断一个字符串中那个字母出现次数最多,并且出现了几次)
因为算法比较烂,所以想做一下这方面的积累。
尽量能够每天学习一个新算法吧。(不过估计很悬)
好吧,今天第一个是字符串转换驼峰
直接上代码
var str = 'toupper-case'; var arr = str.split('-'); //toupper,case for (var i = 1; i < arr.length; i++) { //把除了第一个数组后面的数组的第一个值设置为大写然后大写字母和去掉第一个字符的剩下的字符进行拼合 arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].slice(1); }; var str1 = arr.join(''); //join方法把数组转换成为字符串..... alert(str1);
第二个是判断一个字符串中那个字母出现次数最多,并且出现了几次
var str = 'aaaassssddddddd'; var obj = {}; var num = 0; var value = ''; for (var i = 0; i < str.length; i++) { if (!obj[str[i]]) { obj[str[i]] = []; } else { obj[str[i]].push(str[i]); } }; //var obj1 = { // 'a': ['a'], // 's': ['s', 's', 's', 's', 's', 's'], // 'd': ['d', 'd'] //}; for (var attr in obj) { if (num < obj[attr].length) { //第一次a只有一位,那么num = 1,第二次s有N位,那么num = N , 第三次d小于n位,那么num还是n //这时候如果没有值大于num那么说明这个value是最多的字母 就可以返回当前的num和value num = obj[attr].length; value = obj[attr][0]; } }; alert(value + ',' +num)