[CodeKata] getLengthOfStr 함수 구현하기
문제
String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.
str : 텍스트를 반환하는데 중복되지 않은 알파벳 길이(숫자 반환)
예를 들어, str = "abcabcabc"라면, return은 3이다. 왜냐하면 'abc'가 가장 길기 때문이다.
str = "aaaaa" retrun은 1이다. 왜냐하면 'a'가 가장 길기 때문이다.
str = "sttrg" retrun은 3이다. 왜냐하면 'trg'가 가장 길기 때문이다.
풀이
얼추 for문으로 문자열 하나하나를 비교하며 slice() 메서드를 사용하는 것까지는 접근했지만 도저히 해결할 수 없었다. 그래서 구글에 모범 답안을 가져와서 이해하고 정리하는 시간을 가졌다.
const getLengthOfStr = str => {
let sliceStr = [];
let resultStr = 0;
for(let i=0; i<str.length; i++) {
if(sliceStr.indexOf(str[i]) === -1) {
sliceStr.push(str[i]);
if(resultStr < sliceStr.length) {
resultStr = sliceStr.length;
}
} else {
sliceStr = sliceStr.slice(sliceStr.indexOf(str[i]) + 1);
sliceStr.push(str[i])
}
}
return resultStr;
}
String.prototype.indexOf() : 호출한 String 객체에서 주어진 값과 일치하는 첫 번째 인덱스를 반환한다. 일치하는 값이 없으면 -1을 반환한다.
String.prototype.slice() : 문자열의 일부를 추출하면서 새로운 문자열을 반환한다.
전체적인 흐름은 str를 한 글자씩 불러오면서 만약에 sliceStr에 없는 알파벳이라면 sliceStr에 push()하고, resultStr보다 현재 sliceStr의 길이가 크다면 resultStr에 그 길이 값을 넣는다. 만약 한 글자씩 불러오면서 sliceStr에 있는 알파벳이 나온다면 sliceStr 값을 기존 sliceStr 값에서 해당 알파벳을 찾아 중복된 첫 알파벳 부분까지 제거한 나머지 값을 할당한다.\
'⭐️ Memory > 교육수강 회고' 카테고리의 다른 글
[CodeKata] getPrefix 함수 구현하기 (0) | 2022.05.13 |
---|---|
[CodeKata] sameReverse 함수 구현하기 (0) | 2022.05.12 |
[CodeKata] reverse 함수 구현하기 (0) | 2022.05.10 |
[CodeKata] twoSum 함수 구현하기 (0) | 2022.05.09 |
위코드 2주차 회고 - 위스타그램 (Vanilla JS) (0) | 2022.05.07 |
댓글
이 글 공유하기
다른 글
-
[CodeKata] getPrefix 함수 구현하기
[CodeKata] getPrefix 함수 구현하기
2022.05.13 -
[CodeKata] sameReverse 함수 구현하기
[CodeKata] sameReverse 함수 구현하기
2022.05.12 -
[CodeKata] reverse 함수 구현하기
[CodeKata] reverse 함수 구현하기
2022.05.10 -
[CodeKata] twoSum 함수 구현하기
[CodeKata] twoSum 함수 구현하기
2022.05.09