Counting Duplicates
链接
题目
写一个方法使它返回在输入字符串中出现不止一次的字母和数字的计数。假设输入的字符串只包含字母(大小写)和数字。
duplicateCount("abcde"); // return 0
duplicateCount("aabbcde"); // return 2 (a和b)
duplicateCount("aabBcde"); // return 2 (a两次,b两次)
duplicateCount("indivisibility"); // return 1 (i六次)
duplicateCount("Indivisibilities"); // return 2 (i七次,s两次)
duplicateCount("aA11"); // return 2
duplicateCount("ABBA"); // return 2
我的思路及实现
function duplicateCount(text){
var count = 0;
text = text.toLowerCase();
for (var i = 0; i < text.length; i++) {
var str = text.substr(i, 1);
var other = text.substring(0, i) + text.substring(i+1, text.length);
if (other.match(str)){
count++;
var reg = new RegExp(str, "g");
text = text.replace(reg, "");
i = 0;
}
}
return count;
}
Best Practice
function duplicateCount(text){
return (text.toLowerCase().split('').sort().join('').match(/([^])\1+/g) || []).length;
}
function duplicateCount(text){
return text.toLowerCase().split('').filter(function(val, i, arr){
return arr.indexOf(val) !== i && arr.lastIndexOf(val) === i;
}).length;
}