[Algorithm]

newjinny·2021년 10월 23일
0

algorithm

목록 보기
1/4
post-thumbnail

🔍 String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.

  • str: 텍스트 return: 중복되지 않은 알파벳 길이 (숫자 반환)
  • 예를 들어, str = "abcabcabc" return 은 3 => 'abc' 가 제일 길기 때문
  • str = "aaaaa" return 은 1 => 'a' 가 제일 길기 때문
  • str = "sttrg" return 은 3 => 'trg' 가 제일 길기 때문

빈 배열 생성하고, 변수 선언 후 그 값을 0으로 할당한다.

const getLengthOfStr = (str) => {
  let sliceStr = [];
  let lastStr = 0;

입력받은 인자의 길이만큼 for문을 돌리고,
만약 sliceStr 배열에 str[i]가 포함되어있지 않다면 포함시킨다.

그리고 lastStr이 sliceStr의 길이보다 작으면, lastStr = sliceStr의 길이와 같게 한다.

  for (let i = 0; i < str.length; i++) {
    if (sliceStr.indexOf(str[i]) === -1) {
      sliceStr.push(str[i]);

      if (lastStr < sliceStr.length) {
         lastStr = sliceStr.length;
      }
    } 

str[i]가 sliceStr에 포함되어있으면 sliceStr의 값을 재할당하고,
sliceStr에서 str[i]의 위치를 찾아 (index+1)에서 끝까지 잘라낸다.
 else {
   sliceStr = sliceStr.slice(sliceStr.indexOf(str[i]) + 1);
   sliceStr.push(str[i]);
 }
}
return lastStr;
};

var str = "sttrg";
getLengthOfStr(str);

✔️ 이번 문제는 너무 어려워서 어떻게 시작할 지부터 한참 고민했다. 아직도 완벽하게 이해하지 못해서 (sliceStr.indexOf(str[i]) + 1) 이부분에 대해 조금 더 공부 후 다시 추가수정 해야겠다.

profile
I Love Pizza, 나만의 토핑으로 한조각씩 맞춰가는 중

0개의 댓글