본문 바로가기

TIL

[TIL-124] 위코드 24일차: 코드 카타

 

 


 

코드 카타

 

주어진 문자열 내에서 중복되지 않고 이어지는 가장 긴 문자열의 길이 구하기

내 답안

const getLengthOfStr = str => {

  let arr = [];
  let maxLength = 0;
  let alphabet = "";

  for (let j = 0; j < str.length; j++) {
    for (let i = j; i<str.length; i++) {
      alphabet = str.charAt(i);

      if (arr.includes(alphabet)) {
        if(maxLength < arr.length) {
          maxLength = arr.length;
        }
        arr = [];
        break;
      } else {
        arr.push(alphabet);
      }
    }
  }
    
  return maxLength;
}

 

다른 답안 1

const getLengthOfStr = str => {
  let countMax = 0;
  let countString = “”;
  for(let i = 0; i < str.length; i++) {
    let indexOfStr = countString.indexOf(str[i]);
    if (indexOfStr !== -1){
      countString = countString.substr(indexOfStr + 1);
    }
    countString = countString + str[i];
    console.log(countString, i);
    countMax = Math.max(countMax, countString.length);
    console.log(countString.length);
  }
  return countMax
}
let aaa = “sttng”;
console.log(getLengthOfStr(aaa));

 

 

다른 답안 2

const getLengthOfStr = str => {
  let max = 0; // 길이의 최대값

  for (let i=0; i < str.length; i++) {
    let curWord = ""; // 단어 초기화 
    let curLength = 0; // 길이 초기화

    for (s of str.slice(i)) { // 새로운 시작점~끝까지 str 자르기

      // 1. 단어 작업 : 더할거냐, 초기화할거냐 
      if(!curWord.includes(s)) { 
        curWord += s; 
        curLength++;
      } else {
        curWord = s; // a
        curLength = 1; // 1
      }
      // 2. 단어 작업하고 길이 최대값 비교
        if (max <= curLength) {
          max = curLength; // max 최대값 
        }
      }
    }  
  return max;
}