1 条题解
-
0
自动搬运
来自洛谷,原作者为

CJY
小升初蒟蒻||/article/ugxlm066/team/87748||没有一根棒棒糖解决不了的事情,如果有,就再来一根||最后在线时间:2025年8月24日20时21分搬运于
2025-08-24 21:16:44,当前版本为作者最后更新于2024-11-17 14:59:17,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
前言
Update in
这题似乎有坑,搞了半天!~可能对别的大佬来说很简单!~
思路
我们使用
string提供的find函数直接搜索字符串中是否存在子串 ,每次让计数器自增一。你会获得 分。
题目中说,每一轮剪辑找到 中所有子串 ,而我的代码中一次只找一次,所以会
WA。设 。
- 错误方法:第一轮结束后 ,第二轮结束后 为空,剪辑轮数为 。
- 正确方法:第一轮把所有 删了, 为空,剪辑轮数为 。
我们每次遍历一遍 ,用
substr判断是否有 ,如果有就用erase删除 。你会获得 分。
设 为循环变量,删除 之后就不应该
i++了,否则就会少检测一次。设 。
第一轮把 删掉,,当前 为 ,每次循环都会
i++,所以 变成 了,此时 ,就检测不到下一个 了。我们循环时不写
i++,当 时才i++。如果你是像我这样写的话,你就错了:
for(int i=0;i<s.size()-2;)你会获得 分,有一个
RE。s.size()的类型是size_t,size_t只能存无符号整数,故不能存负数,当 时,,这样会溢出,并变成一个很大的整数,所以会越界。我们将
s.size()强制转整。这样就 分了!
Code
while(s.find("not")!=string::npos){ for(int i=0;i<(int)s.size()-2;){ if(s.substr(i,3)=="not") s.erase(i,3); else i++; } c++; }总结
所以我们以后要养成好习惯,尽量把
s.size()强制转整。
- 1
信息
- ID
- 10904
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者