1. 程式人生 > >No repeats please

No repeats please

單個字符 length 步驟 相同 字符 ret and str em1

把一個字符串中的字符重新排列生成新的字符串,返回新生成的字符串裏沒有連續重復字符的字符串個數.連續重復只以單個字符為準

例如, 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