[Hash Table] Valid Anagram

Yongki Kim·2023년 8월 31일
0
post-thumbnail

242. Valid Anagram

지문은 링크에서 확인해주세요.

1. 해답을 보지 않고 스스로 문제를 해결한 과정

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 
 * Runtime	: 71 ms
 * Memory	: 42.08 MB 
 */
var isAnagram = function(s, t) {
  if(s.length !== t.length) {
    return false;
  }

  const hash = {}

  for(let i = 0; i < s.length; i++){
    const char = s[i];
    if(hash[char]){
        hash[char] += 1;
    } else {
        hash[char] = 1
    }
  }  

  for(let i = 0; i < t.length; i++){
    const char = t[i];

    if(!hash[char]) {
      return false;
    }
    
    hash[char] -= 1;
  }  

  return true
};

직전 문제의 해답 [Hash Table] Ransom Note을 그대로 사용하되, for문 탈출 조건문은 가독성을 높였습니다.

2. 여러 해답을 직접 찾아서 자신이 작성한 알고리즘에 대해서 회고한 내용

2-1. Using array

해답의 전문은 링크를 확인해주세요.

var isAnagram = function(s, t) {
  if (s.length !== t.length) {
    return false;
  }

  var freq = new Array(26).fill(0);
  for (var i = 0; i < s.length; i++) {
    freq[s.charCodeAt(i) - 'a'.charCodeAt(0)]++;
    freq[t.charCodeAt(i) - 'a'.charCodeAt(0)]--;
  }

  for (var i = 0; i < freq.length; i++) {
    if (freq[i] !== 0) {
      return false;
    }
  }

  return true;
};

알파벳 개수만큼의 배열을 활용하여, anagram 이라면 해당 배열의 요소는 모두 0으로 돌아와야하는 해답입니다.

0개의 댓글