[LeetCode/Java] 383. Ransom Note

yuKeon·2023년 8월 31일
0

LeetCode

목록 보기
18/29
post-thumbnail

0. 문제

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


1. 문제 설명

  • 문자열 ransomNote와 magazine이 주어진다.
  • magazine의 문자열을 재조합해서 ransomNote를 만들 수 있으면 true를 반환하라.

2. 문제 풀이

2.1. 접근법 : 해시맵

  • magazine의 문자를 key로, 해당 문자의 개수를 value로 저장한다.
  • ransomNote의 모든 문자를 탐색하면서 해당 문자가 맵에 존재하는지 찾는다.
  • 맵에 존재한다면 개수(value)를 하나 뺀다.
  • 만약, 맵에 존재하지 않거나, 존재하더라도 개수가 0이라면 false를 반환한다.

3. 코드

class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        HashMap<Character, Integer> map = new HashMap();

        for (char chr : magazine.toCharArray()) map.put(chr, map.getOrDefault(chr, 0) + 1);

        for (int i = 0; i < ransomNote.length(); i++) {
            char tmp = ransomNote.charAt(i);

            if (map.containsKey(tmp) && map.get(tmp) > 0) {
                map.put(tmp, map.get(tmp) - 1);
            } else return false;
        }
        return true;
    }
}

4. 결과

0개의 댓글