No repeats please
把一個字符串中的字符重新排列生成新的字符串,返回新生成的字符串裏沒有連續重復字符的字符串個數.連續重復只以單個字符為準
例如, 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");
其實個人感覺這題有點問題 應該加入一個查重的步驟,就是我註釋掉的那部分,如果兩個字符相同就不繼續進行了
No repeats please