三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

接收新网站如何做诊断苏州网站设计公司兴田德润在哪里呢

接收新网站如何做诊断苏州网站设计公司兴田德润在哪里呢 接收新网站如何做诊断,苏州网站设计公司兴田德润在哪里呢,自由建网站的网络程序,wordpress主题微信验证码现在有两个字符串#xff0c;要判断一个字符串中的字符能否由另一个字符串的字符构成如果可以#xff0c;返回 true #xff1b;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。示例 #xff1a; 输入#xff1a;ransomNote a, magaz…现在有两个字符串要判断一个字符串中的字符能否由另一个字符串的字符构成如果可以返回true否则返回false。magazine中的每个字符只能在ransomNote中使用一次。示例 输入ransomNote a, magazine b 输出false解法class Solution { public: bool canConstruct(string ransomNote, string magazine) { // 统计 magazine 中每个字母的出现次数 vectorint count(26, 0); for (char c : magazine) { count[c - a]; } // 遍历 ransomNote检查是否能用 magazine 的字母拼出 for (char c : ransomNote) { int idx c - a; if (count[idx] 0) { return false; // 这个字母不够用了 } count[idx]--; // 用掉一个 } return true; } };时间复杂度O(n m)其中 n 是magazine长度m 是ransomNote长度。只需要遍历两个字符串各一次。空间复杂度O(1)常数空间因为数组大小固定为 26不随输入规模变化。解题思路第一步存货统计magazine遍历magazine执行count[magazine[i] - a]将字母映射到 0~25 的索引计数加一。第二步消耗校验ransomNote遍历ransomNote执行count[ransomNote[i] - a]--。在减之前先判断如果count[idx] 0说明杂志里没这个字母了或者用完了直接return false。如果大于 0减掉继续。
← 返回列表