N

(Leet Code c++)Ransom Note 본문

Leet Code 알고리즘

(Leet Code c++)Ransom Note

naeunchan 2021. 8. 10. 10:33
728x90
반응형

383. Ransom Note

 

Given two stings ransomNote and magazine, return true if ransomNote can be constructed from magazine and false otherwise.

Each letter in magazine can only be used once in ransomNote.

 

Example 1:

Input: ransomNote = "a", magazine = "b" Output: false

Example 2:

Input: ransomNote = "aa", magazine = "ab" Output: false

Example 3:

Input: ransomNote = "aa", magazine = "aab" Output: true

 

Constraints:

  • 1 <= ransomNote.length, magazine.length <= 105
  • ransomNote and magazine consist of lowercase English letters.

주어진 문자열 magazine의 각 단어를 순회하면서 나온 알파벳의 횟수를 알 수 있도록 카운팅한다.

 

이후 ransomNote도 순회하면서 check 벡터에 있는 알파벳 횟수를 줄여준다.

만약 해당 알파벳의 값이 0 이하라면 바로 false를 반환.

 

class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        vector<int> check(26, 0);
        
        for(int i = 0; i < magazine.size(); i++){
            check[magazine[i] - 'a']++;
        }
        
        for(int i = 0; i < ransomNote.size(); i++){
            if(check[ransomNote[i] - 'a']-- <= 0){
                return false;
            }
        }
        
        return true;
    }
};
728x90
반응형