当前位置:网站首页>力扣每日一题-第50天-383. 赎金信
力扣每日一题-第50天-383. 赎金信
2022-08-08 23:13:00 【重邮研究森】
2022.8.8今天你刷题了吗?
题目:
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。
如果可以,返回 true ;否则返回 false 。
magazine 中的每个字符只能在 ransomNote 中使用一次。
分析:
给定两个字符串,需要判断2号字符串是否包含了1号字符串,嗯,就是这么简单。
思路:直接在2号字符串中进行查找1号字符串,也就是遍历一次一号字符串,然后遍历时判断2号中有没有,如果没有直接返回false,如果有,则把该字符串替换,这样防止下次重复判断。
解析:
1.查找法
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
for (auto i = 0; i < ransomNote.size(); i++)
{
int pos = magazine.find(ransomNote[i]);
if (pos!=-1)
{
magazine[magazine.find(ransomNote[i])] = ' ';
}
else
{
return false;
}
}
return true;
}
};
2.计数法
官方的写法是:先把2号字符串中的26个字母的次数记下来,然后我们开始遍历一号字符串,如果1号字符串存在某一个元素,那么2号字符串中该元素次数-1,然后判断-1之后次数是否<0,也就是没有了
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
vector<int> vec(26);
for (auto &ch : magazine)
{
vec[ch - 'a']++;
}
for (auto& ch : ransomNote)
{
vec[ch - 'a']--;
if (vec[ch - 'a'] < 0)
{
return false;
}
}
return true;
}
};
边栏推荐
猜你喜欢
随机推荐
【YOLOv5】6.0环境搭建(不定时更新)
【Verilog基础】PPA优化问题总结(含面积优化、速度优化)
(newcoder 15079)无关(容斥原理)
Taro小程序跨端开发入门实战
Button Wizard for ts API usage
4399 it operations intern interview experience
微信小程序开发一些函数使用方法
(2022牛客多校四)A-Task Computing (排序+动态规划)
Hi3516 use wifi module
Kubernetes 资源核心原理
Porting ucos2 code from stm32 to GD32
[PP-YOLOv2] Test a custom dataset
WeChat small program "decompiled" combat "behind to unpack the eggs
第二课:概率论
JSDay1-两数之和
JSDay1-合并两个有序数组
(2022牛客多校四)H-Wall Builder II(思维)
【CUDA】版本自由切换
[YOLOv5] 6.0 environment construction (updated from time to time)
(Codeforce 757)E. Bash Plays with Functions(积性函数)