js-FCC 알고리즘-No repeats please 문자열 의 전체 배열(상세 설명)

하나의 문자열 에 있 는 문 자 를 다시 배열 하여 새로운 문자열 을 만 들 고 새로 생 성 된 문자열 에 연속 중복 문자 가 없 는 문자열 의 개 수 를 되 돌려 줍 니 다.연속 반복 은 하나의 문자 만 기준 으로 합 니 다.
예 를 들 어 aab 는 총 6 개의 배열(aab,aab,aba,aba,baa,baa)이 있 지만 두 개의(aba and aba)만 연속 으로 중복 되 는 문자 가 없습니다(이 예 에서 a).
인터넷 자료 에서 약간의 사고방식 을 얻 었 다.나의 코드 는

function permAlone(str) {
 var arr=str.split("");
 var perarr=[];
 var begin=0;
 //    ,        ,   return 0
 var reg = /(.)\1+/g;
 if(str.match(reg)!==null&&str.match(reg)[0]===str){
  return 0;
 }
 //       
 function swap(idx1,idx2){
   var temp=arr[idx1];
   arr[idx1]=arr[idx2];
   arr[idx2]=temp;
 }
 //  begin        ,                  
 function permall(arr,begin){
  if(begin==arr.length-1){
   perarr[perarr.length]=arr.join("");
   return;
  }
  for(var i=0;(i+begin)<arr.length;i++){
   swap(begin,begin+i);
   permall(arr,begin+1);
   swap(begin,begin+i);
  }
 }
 permall(arr,begin);
 //          
 return perarr.filter(function(val) {
   return !val.match(reg);
 }).length;
}

permAlone('aab');
우선 첫 번 째 문자 와 그 뒤의 문 자 를 일일이 교환 합 니 다.
이 어 첫 번 째 문 자 를 고정 시 키 고 뒤의 모든 문자 의 배열 을 구 합 니 다.이때 우 리 는 뒤의 모든 문 자 를 두 부분 으로 나 누 었 다.뒤의 문자 의 첫 번 째 문자 와 이 문자 뒤의 모든 문자 이다.그리고 첫 번 째 문 자 를 그 뒤의 문자 와 하나씩 교환 합 니 다.
무 거 운 것 을 없 애 는 모든 배열 은 첫 번 째 숫자 부터 그 뒤에 반복 되 지 않 는 숫자 와 각각 교환 하 는 것 이다.
이상 의 js-FCC 알고리즘-No repeats please 문자열 의 전체 배열(상세 설명)은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.참고 하 실 수 있 고 많은 응원 부 탁 드 리 겠 습 니 다.

좋은 웹페이지 즐겨찾기