Counting Duplicates

链接

CodeWar-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;
}