[알고리즘] 242. Valid Anagram

프최's log·2020년 12월 29일
0

study

목록 보기
57/59

문제 (Easy)

Given two strings s and t , write a function to determine if t is an anagram of s.

제한사항

  • You may assume the string contains only lowercase alphabets.
  • What if the inputs contain unicode characters? How would you adapt your solution to such case?

알고리즘

  1. 배열의 길이 비교를 한다.
    1-1. 배열의 길이가 다르면 false
  2. 배열의 길이가 동일하면 문자열 안의 알파벳을 비교한다.
    2-1. 두개의 문자열을 객체 담는다.
    2-2. 두 객체의 값이 동일하다면 true , false

구현

var isAnagram = function(s, t) {
  
  if ( s.length === 0 || t.length === 0){
    return true;
  }
  
  if ( s.length !== t.length ) {
    return false;
  }
  
  let sObj = {};
  let tObj = {};
  
  for(let i = 0; i < s.length; i++ ){
    if ( !(s[i] in sObj) ){
      sObj[s[i]] = 1;
    } else {
      sObj[s[i]]++;
    }
  }
  
    for(let j = 0; j < t.length; j++ ){
    if ( !(t[j] in tObj) ){
      tObj[t[j]] = 1;
    } else {
      tObj[t[j]]++;
    }
  }
  
  for(let key in sObj){
    if (!(key in tObj)) {
      return false;
    } 
    if (sObj[key] !== tObj[key]){
      return false;
    }
  }
  return true;
}

다른사람풀이

...하...ㅠㅠ... 배열을 왜 생각안했을까..

var isAnagram = function(s, t) {
    return s.split('').sort().join('') === t.split('').sort().join('');
};
profile
차곡차곡 쌓아가는 나의 개발 기록

0개의 댓글