isogram 풀기(9-19)

Blackwidow·2020년 12월 24일
0

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;넣은건 생각도 못했다.. 기발쓰...

여튼, 아이소그램을 푸는것은 이런 다양한 방식으로 풀 수 있는데 더 많이 공부해야 나의 코드도 간결해질 것 같다.

profile
javascript 공부하는 sumiindaeyo

0개의 댓글