[알고리즘] LeetCode - Valid Anagram

Jerry·2021년 5월 17일
0

LeetCode

목록 보기
34/73
post-thumbnail

LeetCode - Valid Anagram

문제 설명

Given two strings s and t, return true if t is an anagram of s, and false otherwise.

입출력 예시

Example 1:

Input: s = "anagram", t = "nagaram"
Output: true

Example 2:

Input: s = "rat", t = "car"
Output: false

제약사항

Constraints:

1 <= s.length, t.length <= 5 * 104
s and t consist of lowercase English letters.

Solution#1 : 정렬 이용

import java.util.Arrays;

class Solution {
    public boolean isAnagram(String s, String t) {

        char[] sArr = s.toCharArray();
        char[] tArr = t.toCharArray();
        Arrays.sort(sArr);
        Arrays.sort(tArr);

        if (sArr.length != t.length()) {
            return false;
        }
        for (int i = 0; i < sArr.length; i++) {
            if (sArr[i] != tArr[i]) {
                return false;
            }
        }
        return true;
    }

    
}

Solution#2 : 배열을 이용한 해싱

public boolean isAnagramByHash(String s, String t) {

        if (s.length != t.length()) {
            return false;
        }

        int[] counter = new int[26];

        for (int i = 0; i < s.length(); i++) {
            counter[s.charAt(i) - 'a']++;
        }

        for (int i = 0; i < t.length; i++) {
            int countIdx = t.charAt(i) - 'a';
            counter[countIdx]--;

            if (counter[countIdx] < 0) {
                return false;
            }
        }
        return true;
    }
profile
제리하이웨이

0개의 댓글