문제
String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.
str: 텍스트
return: 중복되지 않은 알파벳 길이 (숫자 반환)예를 들어,
str = "abcabcabc"
return 은 3
=> 'abc' 가 제일 길기 때문str = "aaaaa"
return 은 1
=> 'a' 가 제일 길기 때문str = "sttrg"
return 은 3
=> 'trg' 가 제일 길기 때문
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