把一个字符串中的字符重新排列生成新的字符串,返回新生成的字符串里没有连续重复字符的字符串个数.连续重复只以单个字符为准
例如, aab
应该返回 2 因为它总共有6中排列 (aab
, aab
, aba
, aba
, baa
, baa
), 但是只有两个 (aba
and aba
)没有连续重复的字符 (在本例中是 a
).
function permAlone(str) {
var arr = str.split("");
var a = [];
function swap(item1, item2) {
var temp = arr[item2];
arr[item2] = arr[item1];
arr[item1] = temp;
}
function huishuo(arr, k, length) {
var i;
if (k === length) {
a.push(arr.join(""));
} else {
for (i = k; i < length; i++) {
//if(k!==i&&arr[k]===arr[i]){
//return;
//}
swap(k, i);
huishuo(arr, k + 1, length);
swap(k, i);
}
}
}
huishuo(arr, 0, arr.length);
var b=a.filter(function(e){
return !/([a-zA-Z])\1/.test(e);
});
return b.length;
}
permAlone("aabb");
其实个人感觉这题有点问题 应该加入一个查重的步骤,就是我注释掉的那部分,如果两个字符相同就不继续进行了