문자열 에 가장 많이 나타 난 문 자 를 검색 하고 횟수 를 집계 합 니 다.

오늘 문 제 를 보 았 습 니 다. 문자열 에 가장 많이 등장 하 는 문 자 를 검색 하고 그 횟수 를 통계 한 다음 에 직접 작성 하 는 것 이 재 귀적 으로 이 루어 진 것 입 니 다. 원 리 는 다음 과 같 습 니 다. 매번 문자열 STR 의 첫 번 째 문자 FS 를 꺼 내 문자열 STR 에 나타 난 횟수 N 을 통계 한 다음 에 문자열 STR 의 FS 를 삭제 합 니 다.문자열 STR 의 길이 가 N 보다 작 을 때 까지.
 
 

   
   
   
   
1 var str = " aaaa13123aass123123121sssssddd123d1231231dddd " ;
2 var fs = "" ; //
3 var n = 0 ; //
4 function fineStr(s,n,fs){
5 var f = s.match( / ^. / )[ 0 ]; //
6 var rf = new RegExp(f, " g " ); //
7 var nn = s.match(rf).length; // match
8 if (nn > n){fs = f;n = nn} //
9 s = s.replace(rf, "" ); //
10 if (s.length < n){ return [n,fs];} //
11 return fineStr(s,n,fs); //
12 }
13
14 var ar = fineStr(str,n,fs);
15 alert(ar);

위의 코드 에 또 하나의 문 제 는 가장 많은 문자 가 하나 가 아니 라 몇 개 있 을 때 첫 번 째 로 나타 난 문자 만 찾 을 수 있다 는 것 이다. 아래 의 코드 는 수정 을 거 친 후에 모든 발생 횟수 가 가장 높 은 문 자 를 찾 을 수 있다 는 것 이다.
view source print ? 01 function fineStr(s,n,fs){ 02          var f=s.match(/^./)[0]; 03          var rf= new RegExp(f, "g" ); 04          var nn=s.match(rf).length; 05          if (nn==n)fs.push(f); 06          if (nn>n){fs=[];fs.push(f);n=nn} 07          s=s.replace(rf, "" ); 08          if (s.length<n){ return [ " :" +fs.join( "," ), " :" +n];} 09          return   fineStr(s,n,fs); 10      } 11     12 var str= "23234kjafh328akdjfh9238442" ; 13 alert(fineStr(str,0,[]));

좋은 웹페이지 즐겨찾기