242. Valid Anagram

안창범·2023년 8월 31일
0

LeetCode Top Interview 150

목록 보기
15/27

문제

https://leetcode.com/problems/valid-anagram/description/?envType=study-plan-v2&envId=top-interview-150

해결 방법

  • 이전에 풀었던 Ransom Note와 거의 유사한 문제
  • Ransom Note와는 달리 s와 t에서 나온 알파벳의 횟수가 정확히 일치해야 함
  • 해결 방법은 먼저 s와 t의 길이가 같은지 체크한 후, s에 각각의 알파벳이 몇번씩 나오는지 체크해주고, t에서 특정 알파벳이 s에 나온 횟수보다 크다면 false return
  • 특정 알파벳이 t에서 나온 횟수가 s에서 나온 횟수보다 작은지는 따로 체크하지 않아도 되는 이유는 둘의 길이가 같은지 먼저 체크를 해줬기 때문에, 특정 알파벳이 t보다 s에서 적게 나왔다면, 다른 알파벳이 s에서 더 많이 나왔을 것이기 때문

코드

class Solution {
    public boolean isAnagram(String s, String t) {
        if (s.length() != t.length()) {
            return false;
        }

        int[] alphabet = new int[26];
        for (int i = 0 ; i < s.length() ; i ++) {
            char c = s.charAt(i);
            alphabet[c - 'a'] ++;
        }

        for (int i = 0 ; i < t.length() ; i ++) {
            char c = t.charAt(i);
            alphabet[c - 'a'] --;
            if (alphabet[c - 'a'] < 0) {
                return false;
            }
        }

        return true;
    }
}

결과

0개의 댓글

관련 채용 정보