[CodeKata]Day3. 문자열 중 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환

최송희·2021년 3월 4일
0

CodeKata

목록 보기
2/8

문제

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

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

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

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

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

1단계 짱구굴리기

결과물

const getLengthOfStr = str => {
  let maxLength = 0;
  let returnMaxLength = 0;
  while(str.length>0 && str.length>returnMaxLength){
    let checkString = "";
    for(letter of str){
        if(checkString.indexOf(letter) === -1){
          checkString+= letter;
          maxLength = checkString.length;
        }else{
          if(returnMaxLength <maxLength){
            returnMaxLength =maxLength;
          }
          checkString = "";
          continue;
        }
        console.log(`str : ${str}, letter : ${letter}, checkString : ${checkString}, maxLength : ${maxLength}`);
    }
    str = str.slice(1);    
    // console.log("************",returnMaxLength, maxLength,str);
    if(returnMaxLength < maxLength){
      // console.log("///////////////",returnMaxLength, maxLength);
      returnMaxLength = maxLength;
    }

  }
  console.log("return : ",returnMaxLength);
  return returnMaxLength;

}

getLengthOfStr("aabcdefghicjklmnopxzl");

https://repl.it/@CodeKataJavaSc1/Week-1-Day-3-iamsonghee#index.js

새로 알게 된 부분

for in vs for of

for문 아직도 헷갈리니 언제까지 for(let i; i<str.length; i++) 쓸꺼니~~
let str = "wecode";

  • for(let i in str)
    index 값을 넘겨준다, 즉 str의 길이만큼 index값을 i에 담아 for문을 돌린다
for(let i in str){
  console.log(i, str[i]);
  /* 
  0 w
  1 e
  2 c
  3 o
  4 d
  5 e 
  */
}
  • for(let i of str)
    문자열을 뽑아서 바로 i에 넣어준다! (index값이 필요하지 않을경우 사용하자)
  for(let j of str){
    console.log(j);
  }
  /*
  w
  e
  c
  o
  d
  e
  */

문자열 자르기 (시작 인덱스부터 끝까지)

  • str.slice(1); 1번 인덱스부터 끝까지 출력해오기
let str = "wecode";
str.slice(1); // str은 ecode
  • str.slice(1); 1번 인덱스부터 끝까지 출력해오기
    let str = "wecode";
    str
    2.slice(1,2); // str은 ec

0개의 댓글