242. Valid Anagram, 자바 풀이

이원석·2023년 9월 1일

Leetcode

목록 보기
15/22

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

An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.

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


class Solution {
    public boolean isAnagram(String s, String t) {
        HashMap<Character, Integer> map = new HashMap<>();
        char[] sC = s.toCharArray();
        char[] tC = t.toCharArray();
        int cnt = 0;

        for (int i = 0; i < tC.length; i++) {
            if (map.get(tC[i]) == null) {
                map.put(tC[i], 1);
            } else {
                map.put(tC[i], map.get(tC[i]) + 1);
            }
        }

        for (int i = 0; i < sC.length; i++) {
            if (map.get(sC[i]) == null || map.get(sC[i]) <= 0) {
                return false;
            }

            if (map.get(sC[i]) > 0) {
                cnt += 1;
                map.put(sC[i], map.get(sC[i]) - 1);
            }
        }

        if (cnt == tC.length) {
            return true;
        } else {
            return false;
        }
    }
}

// 주어진 문자열 t가 s의 애나그램이면 return true, 아니면 return false
// 정보) 애나그램이란 해당 문자열을 재배열하여 같은 문자열로 만들 수 있는지를 의미한다.
// HashMap을 사용하여 해결해보자.
// 1. t를 문자형 배열로 변환시켜 요소들을 key값으로 map에 저장한다. (없으면 1, 있으면 += 1)
// 2. s를 문자형 배열로 변환시켜 요소들을 key값으로 두어 map에서 찾는다.
// 2-1. 만약 value값이 1 이상인 경우 cnt += 1, value -= 1
// 2-2. 만약 value값이 0 이하이거나 key값이 null이라면 return false;
// 3. s의 문자열이 t로 재배열 될 수 있다면 (cnt값이 t의 길이와 같다면) return true, 아니면 return false

0개의 댓글