No repeats please

题目

把一个字符串中的字符重新排列生成新的字符串,返回新生成的字符串里没有连续重复字符的字符串个数.连续重复只以单个字符为准

例如, aab 应该返回 2 因为它总共有6中排列 (aab, aab, aba, aba, baa, baa), 但是只有两个 (aba and aba)没有连续重复的字符 (在本例中是 a).


要求

permAlone("aab") 应该返回一个数字.
permAlone("aab") 应该返回 2.
permAlone("aaa") 应该返回 0.
permAlone("aabb") 应该返回 8.
permAlone("abcdefa") 应该返回 3600.
permAlone("abfdefa") 应该返回 2640.
permAlone("zzzzzzzz") 应该返回 0. 

代码

function permAlone(str) {
  var len = str.length;
  var newstr = ""; 

  //递归
  function permute(str){
    var result = [];
    if(str.length == 1) {
      return [str];
    }
    else {
      var temp = permute(str.slice(1));
      for(var i = 0;i < temp.length; i++) {
        for(var j = 0;j < temp[i].length+1; j++) {
          newstr = temp[i].slice(0,j) + str[0] + temp[i].slice(j);
          result.push(newstr);
        }  
      }
      return result;    
    } 
  }   
 var final = permute(str);
 var re = /([A-Za-z])\1+/g ;
 final = final.filter(function(element){
   return !element.match(re);
 });
 return final.length;
}

permAlone('abc');

参考:https://www.cnblogs.com/star91/p/5615327.html

猜你喜欢

转载自blog.csdn.net/kyr1e/article/details/79175819