把一个字符串中的字符重新排列生成新的字符串,返回新生成的字符串里没有连续重复字符的字符串个数.连续重复只以单个字符为准
例如, aab
应该返回 2 因为它总共有6中排列 (aab
, aab
, aba
, aba
, baa
, baa
), 但是只有两个 (aba
and aba
)没有连续重复的字符 (在本例中是 a
).
function permAlone(str) {
var arr = [];
var ans = 0;
for(var i = 0; i < str.length; i++) {
arr.push(str[i]);
}
dfs(0, arr);
function dfs(n, a) {
for(var i = n; i < a.length; i++) {
swap(i, n, a);
if(a[n] == a[n - 1]) {
swap(i, n, a);
continue;
}
if(n < a.length - 1) {
dfs(n + 1, a);
}
else {
if(a[n] != a[n - 1]) {
ans++;
}
}
swap(i, n, a);
}
}
return ans;
}
function swap(x, y, a) {
var t = a[x];
a[x] = a[y];
a[y] = t;
}
permAlone("abcdef");