isogram을 풀다가 다양한 방식으로 풀게되어서 블로그를 작성하면 좋을 것 같아 올려본다.
첫번째 방법!
function isIsogram(str) {
let lowerToCaseStr = str.toLowerCase();
for(let i = 0; i < lowerToCaseStr.length-1; i++){
for(let j = i+1; j < lowerToCaseStr.length; j++){
if(lowerToCaseStr[i] === lowerToCaseStr[j]){
return false;
}
}
}
return true;
}
필자는 이 방법으로 푸는것이 제일 편했다. 하지만 더 짧고 간결한 방법들이 많아서 공부할 겸사겸사 올려본다.
두번째 방법!
function isIsogram(str) {
return !/(\w).*\1/i.test(str)
}
정규표현식이라고 하는데.... 아직 코린이에겐 생소하고 파고싶지 않다... 이걸 팔바엔 고차함수와 알고리즘 공부를 더 하겠다... 언젠간 이 정규식 관련 글을 올리겠다!
세번째 방법!
function isIsogram(str) {
let cache = {};
let strLowered = str.toLowerCase();
for (let i = 0; i < strLowered.length; i++) {
if (cache[strLowered[i]]) {
return false;
}
cache[strLowered[i]] = true;
}
return true;
}
저기 포문안에 if문 조건식에 cache[strLowered[i]]
을 넣고 그다음 cache[strLowered[i]] = true;
넣은건 생각도 못했다.. 기발쓰...
여튼, 아이소그램을 푸는것은 이런 다양한 방식으로 풀 수 있는데 더 많이 공부해야 나의 코드도 간결해질 것 같다.