手记

JS中的关于实现字符检查的实例

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

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

code

function permAlone(str) {
  var arr=str.split("");
  var newArr=[];
  var tmp;
  function swap(index1,index2){
    tmp = arr[index1];
    arr[index1] = arr[index2];
    arr[index2] = tmp;
  }// swap交换函数 
  function generate(int){
    if(int === 1){
      newArr.push(arr.join(""));
    }else{
      for(var i=0;i<int;i++){
        generate(int-1);
        swap(int % 2 ? 0:i,int -1);
      }
    }
  }//递归函数
  generate(arr.length);

  var re=/(.)\1+/g;
  var filtered=newArr.filter(function(string){
    return !string.match(re);
  });
  return filtered.length;
}

permAlone('aab');
0人推荐
随时随地看视频
慕课网APP