首页 > 其他分享 >383. 赎金信

383. 赎金信

时间:2023-03-05 16:22:05浏览次数:27  
标签:ransomNote 字符 ch magazine 383 mp mp1 赎金

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false 。

magazine 中的每个字符只能在 ransomNote 中使用一次。

 1 class Solution {
 2 public:
 3     bool canConstruct(string ransomNote, string magazine) {
 4         unordered_map<char, int> mp;
 5         unordered_map<char, int> mp1;
 6         //记录magazine里面出现的字符个数
 7         for (const auto& ch : magazine)
 8         {
 9             mp[ch]++;
10         }
11         //记录ransomnote出现的字符个数
12         for (const auto& ch : ransomNote)
13         {
14             mp1[ch]++;
15         }
16         //比较mp和mp1,只有mp1所有的字符个数都小于等于mp,才返回true
17         for (const auto& ch : mp1)
18         {
19             if (mp.find(ch.first) == mp.end() || ch.second > mp.find(ch.first)->second)
20             {
21                 return false;
22             }
23         }
24         return true;
25     }
26     bool canConstruct(string ransomNote, string magazine) {
27         int record[26] = { 0 };
28         //add
29         if (ransomNote.size() > magazine.size()) {
30             return false;
31         }
32         for (int i = 0; i < magazine.length(); i++) {
33             // 通过recode数据记录 magazine里各个字符出现次数
34             record[magazine[i] - 'a'] ++;
35         }
36         for (int j = 0; j < ransomNote.length(); j++) {
37             // 遍历ransomNote,在record里对应的字符个数做--操作
38             record[ransomNote[j] - 'a']--;
39             // 如果小于零说明ransomNote里出现的字符,magazine没有
40             if (record[ransomNote[j] - 'a'] < 0) {
41                 return false;
42             }
43         }
44         return true;
45     }
46 
47 };

 

标签:ransomNote,字符,ch,magazine,383,mp,mp1,赎金
From: https://www.cnblogs.com/lihaoxiang/p/17180838.html

相关文章