把一个字符串中的字符重新排列生成新的字符串,返回新生成的字符串里没有连续重复字符的字符串个数。连续重复只以单个字符为准。
例如,
aab
应该返回 2 因为它总共有6中排列 (aab
, aab
, aba
, aba
, baa
, baa
), 但是只有两个 (aba
and aba
)没有连续重复的字符 (在本例中是 a
)。代码:
function permAlone(str) {
/*寻找所有排序*/
var allSortTemp =[str[0]];
var allSort = [];
for(var i=1;i<str.length;i++){
allSort=[];
for(var j =0;j<allSortTemp.length;j++){
for(var k=0;k<allSortTemp[j].length+1;k++){
var temp = allSortTemp[j].slice(0,k)+str[i]+allSortTemp[j].slice(k);
allSort.push(temp);
}
}
allSortTemp = allSort;
}
/*这里是遍历删除有连续重复元素部分*/
var result = allSort.filter(function(val){
for(var l = 0;l<val.length-1;l++){
if(val[l]==val[l+1]) return false;
}
return true;
});
return result.length;
}
var allSortTemp =[str[0]];
var allSort = [];
for(var i=1;i<str.length;i++){
allSort=[];
for(var j =0;j<allSortTemp.length;j++){
for(var k=0;k<allSortTemp[j].length+1;k++){
var temp = allSortTemp[j].slice(0,k)+str[i]+allSortTemp[j].slice(k);
allSort.push(temp);
}
}
allSortTemp = allSort;
}
/*这里是遍历删除有连续重复元素部分*/
var result = allSort.filter(function(val){
for(var l = 0;l<val.length-1;l++){
if(val[l]==val[l+1]) return false;
}
return true;
});
return result.length;
}
permAlone('aab');