[LeetCode] 383. Ransom Note - Java[자바]

doxxx·2023년 8월 29일
0

LeetCode

목록 보기
16/25
post-thumbnail

링크

문제

두 문자열 ransomNotemagazine이 주어졌을 때, magazine의 문자를 사용하여 ransomNote를 구성할 수 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.

매거진의 각 문자는 랜섬노트에서 한 번만 사용할 수 있습니다.

풀이

import java.util.*;  
  
class Solution {  
    public boolean canConstruct(String ransomNote, String magazine) {  
        Map<Character, Integer> count = new HashMap<>();  
        for (char c : magazine.toCharArray()) {  
            count.merge(c, 1, Integer::sum);  
        }  
        for (char c : ransomNote.toCharArray()) {  
            if (!count.containsKey(c) || count.get(c) == 0) {  
                return false;  
            }  
            count.merge(c, -1, Integer::sum);  
        }  
        return true;  
    }  
}

알파벳 별로 map을 만들어서, merge 메서드를 이용하여 magazine에 있는 알파벳들의 숫자들을 count해줍니다.

이후 ransomNote를 순회하면서, 해당 값이 없거나 0인 경우 구성할 수 없으므로 false를 반환하고 모든 순회가 끝나면 구성할 수 있는 상황이므로 true를 반환합니다.

0개의 댓글