본문 바로가기

카테고리 없음

[JS] 중복되지 않는 알파벳으로 이루어진 가장 긴 문자열 찾기

[ 문제 ] String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이 반환

더보기

* 기본 조건

str: 텍스트

return: 중복되지 않은 알파벳 길이 (숫자 반환)

 

str = "abcabcabc";
// return은 3
// => 'abc' 가 제일 길기 때문

str = "aaaaa";
// return은 1
// => 'a' 가 제일 길기 때문

str = "sttrg";
// return은 3
// => 'trg' 가 제일 길기 때문

 

[ 풀이 ] 

2020.04.10

많이 어려웠다. 

처음에는 split으로 하나하나 쪼개서 str[0]과 같은 문자를 만났을 때 잘라서 새로운 배열에 저장하고, 뒤의 문자와 비교하는 식으로 생각했다. 

하지만 'sttrg'라는 문자를 만났을 때는 전혀 적용되지 않았다. 

 

동기의 도움을 받아 풀었다.. 이해하는 데도 조금 오래 걸린 편이다. 

const getLengthOfStr = str => {
  let sliceStr = [];
  let lastStr = 0;
  
  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;
      }
      
    } else {
      sliceStr = sliceStr.slice(sliceStr.indexOf(str[i]) + 1);
      sliceStr.push(str[i]);
      }
  }
      return lastStr;
}

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