383. Ransom Note【easy】

383. Ransom Note【easy】

Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the ransom note can be constructed from the magazines ; otherwise, it will return false.

Each letter in the magazine string can only be used once in your ransom note.

Note:
You may assume that both strings contain only lowercase letters.

canConstruct("a", "b") -> false
canConstruct("aa", "ab") -> false
canConstruct("aa", "aab") -> true

解法一:

 1 class Solution {
 2 public:
 3     bool canConstruct(string ransomNote, string magazine) {
 4         map<char, int> m_rans;
 5
 6         for (int i = 0; i < ransomNote.length(); ++i) {
 7             ++m_rans[ransomNote[i]];
 8         }
 9
10         for (int i = 0; i < magazine.length(); ++i) {
11             if (m_rans.find(magazine[i]) != m_rans.end()) {
12                 --m_rans[magazine[i]];
13             }
14         }
15
16         for (map<char, int>::iterator it = m_rans.begin(); it != m_rans.end(); ++it) {
17             if (it->second > 0) {
18                 return false;
19             }
20         }
21
22         return true;
23     }
24 };

解法二:

 1 public class Solution {
 2     public boolean canConstruct(String ransomNote, String magazine) {
 3         int[] arr = new int[26];
 4         for (int i = 0; i < magazine.length(); i++) {
 5             arr[magazine.charAt(i) - ‘a‘]++;
 6         }
 7         for (int i = 0; i < ransomNote.length(); i++) {
 8             if(--arr[ransomNote.charAt(i)-‘a‘] < 0) {
 9                 return false;
10             }
11         }
12         return true;
13     }
14 }

参考@yidongwang 的代码。

解法三:

 1 class Solution {
 2 public:
 3     bool canConstruct(string ransomNote, string magazine) {
 4         unordered_map<char, int> map(26);
 5         for (int i = 0; i < magazine.size(); ++i)
 6             ++map[magazine[i]];
 7         for (int j = 0; j < ransomNote.size(); ++j)
 8             if (--map[ransomNote[j]] < 0)
 9                 return false;
10         return true;
11     }
12 };

参考@haruhiku 的代码

解法四:

 1 class Solution {
 2 public:
 3     bool canConstruct(string ransomNote, string magazine) {
 4         vector<int> vec(26, 0);
 5         for (int i = 0; i < magazine.size(); ++i)
 6             ++vec[magazine[i] - ‘a‘];
 7         for (int j = 0; j < ransomNote.size(); ++j)
 8             if (--vec[ransomNote[j] - ‘a‘] < 0)
 9                 return false;
10         return true;
11     }
12 };

参考@haruhiku 的代码

时间: 2024-09-29 08:24:46

383. Ransom Note【easy】的相关文章

27. Remove Element【easy】

27. Remove Element[easy] Given an array and a value, remove all instances of that value in place and return the new length. Do not allocate extra space for another array, you must do this in place with constant memory. The order of elements can be ch

661. Image Smoother【easy】

661. Image Smoother[easy] Given a 2D integer matrix M representing the gray scale of an image, you need to design a smoother to make the gray scale of each cell becomes the average gray scale (rounding down) of all the 8 surrounding cells and itself.

605. Can Place Flowers【easy】

605. Can Place Flowers[easy] Suppose you have a long flowerbed in which some of the plots are planted and some are not. However, flowers cannot be planted in adjacent plots - they would compete for water and both would die. Given a flowerbed (represe

189. Rotate Array【easy】

189. Rotate Array[easy] Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4]. Note:Try to come up as many solutions as you can, there are at least 3 differen

125. Valid Palindrome【easy】

125. Valid Palindrome[easy] Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases. For example,"A man, a plan, a canal: Panama" is a palindrome."race a car" is not a palindrome. No

520. Detect Capital【easy】

520. Detect Capital[easy] Given a word, you need to judge whether the usage of capitals in it is right or not. We define the usage of capitals in a word to be right when one of the following cases holds: All letters in this word are capitals, like "U

345. Reverse Vowels of a String【easy】

345. Reverse Vowels of a String[easy] Write a function that takes a string as input and reverse only the vowels of a string. Example 1:Given s = "hello", return "holle". Example 2:Given s = "leetcode", return "leotcede&q

680. Valid Palindrome II【easy】

680. Valid Palindrome II[easy] Given a non-empty string s, you may delete at most one character. Judge whether you can make it a palindrome. Example 1: Input: "aba" Output: True Example 2: Input: "abca" Output: True Explanation: You co

521. Longest Uncommon Subsequence I【easy】

521. Longest Uncommon Subsequence I[easy] Given a group of two strings, you need to find the longest uncommon subsequence of this group of two strings. The longest uncommon subsequence is defined as the longest subsequence of one of these strings and