코드타카 : 중복되지않는 알파벳 길이 찾기

군밤먹으면서코딩·2021년 6월 23일
0

알고리즘

목록 보기
9/14
post-thumbnail

문제

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

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

예를 들어, str = "abcabcabc" return 은 3 => 'abc' 가 제일 길기 때문

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

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

풀이

  1. 중복되는 알파벳이 없을 때 까지는 새로운 배열(arr)에 push 해준다.

  2. 두번째 빈 배열(arrr2)에 길이를 비교해 첫번째 배열의 길이보다 작다면 두번째 배열에 첫번째 배열의 길이를 넣어준다. ( 똑같은 알파벳을 만난다면 그 앞까지는 다 지워줘야 하기 때문 )

  3. 똑같은 알파벳을 만난다면 arr 값들을 초기화 해준다.

  4. 중복되는 알파벳 값을 push 해준다.

  5. 두 배열의 길이를 비교한다.

const getLengthOfStr = str =>{
  let arr = [];
  let arr2 = [];

for(let i =0;i<str.length;i++){
  if(arr.indexOf(str[i]) === -1){ // arr에 str값이 없으면~
    arr.push(str[i]);
    if(arr.length > arr2.length){  //arr을 초기화시켜줄꺼니까
     arr2 = arr;
    }
    console.log(arr)
  console.log(arr2.length);
  }else{  //앞부분 짤라주기
    console.log(arr);
    arr = arr.slice(arr.indexOf(str[i])+1);
    console.log(arr);
    arr.push(str[i]);// t
    
    console.log(arr)
  
  }
  
}
  
  return Math.max(arr.length,arr2.length);

}
getLengthOfStr('sttrg');

0개의 댓글