把一个字符串中的字符重新排列生成新的字符串,返回新生成的字符串里没有连续重复字符的字符串个数.连续重复只以单个字符为准
例如, aab 应该返回 2 因为它总共有6中排列 (aab, aab, aba, aba, baa, baa), 但是只有两个 (aba and aba)没有连续重复的字符 (在本例中是 a).
code
function permAlone(str) {
var arr=str.split("");
var newArr=[];
var tmp;
function swap(index1,index2){
tmp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = tmp;
}// swap交换函数
function generate(int){
if(int === 1){
newArr.push(arr.join(""));
}else{
for(var i=0;i<int;i++){
generate(int-1);
swap(int % 2 ? 0:i,int -1);
}
}
}//递归函数
generate(arr.length);
var re=/(.)\1+/g;
var filtered=newArr.filter(function(string){
return !string.match(re);
});
return filtered.length;
}
permAlone('aab');