重复字符统计算法。

算法一 :(最优)

var str = 'gegewge4gegewgegeg';

 var obj = {},isAdd=true;

var list = str.split("");
var newList = [];
for (var i = 0; i < list.length; i++) {

isAdd = true;
obj.value = list[i];
obj.conent = 1;
for (var j = 0; j < newList.length; j++) {
if (newList[j].value === obj.value) {
isAdd = false;
newList[j].conent += 1
}
}
if (isAdd) newList.push(obj)
}

缺点: 两个for循环代码不够简洁; 注意:不要indexof去做, indexof每次都对重头到尾遍历一次,时间复杂度比这个更高。

算法二  (时间复杂度最低)

Object {}
var str = 'gegewge4gegewgegeg';

var obj = {};

var list = str.split("");
for (var i = 0; i < list.length; i++) {
if(obj[list[i]]){ obj[list[i]]+=1 }else{ obj[list[i]]=1}
}

缺点 :obj占用内存越来越大(当str长度不可控的时候);

 

posted @ 2016-12-19 15:38  web执行者  阅读(77)  评论(1)    收藏  举报