[JS알고리즘] 문자열 압축



알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는

문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시

오. 단 반복횟수가 1인 경우 생략합니다.


function solution(s){
  let answer="";
  let cnt=1;
  s=s+" ";
  for(let i=0; i<s.length-1; i++){	//length-1 이어야 알파벳까지만 감. 바로 전줄에서 " "로 문자열을 하나 증가시켜놓은거 이전까지만 돌아야하기 떄문.
    if(s[i]===s[i+1]) cnt++;
    else{
      answer+=s[i];
      if(cnt>1) answer+=String(cnt);
      cnt=1;
    }
  }
  return answer;
}

let str="KKHSSSSSSSE";
console.log(solution(str));
  1. for문으로 돌리는 s에서 s[i] 와 s[i+1]의 값이 동일한지 비교하고 같으면 cnt를 증가(cnt는 갯수이기 때문에 무조건 1부터 시작한다)
  2. cnt가 1보다 크면 answer에 더한다



inflearn 자바스크립트 알고리즘 강의 내용 =)




© 2018. by sora

Powered by sora