酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

时间限制:1s 内存限制:512mb 题目描述 字符串 s 是一个仅由英文小写字母构成的串。现在,你可以对字符串 s 执行任意次如下操作: - 选择 s 长度为 4 的一个子串,将其替换为 love。 请问,至少操作多少次,字符串 s 不再有子串 friend。 - 定义:子串指的是一个字符串中连续的一段字符序列。例如,字符串 aabbcc 有子串 aab、aabb,但 abc 不是字符串 aabbcc 的子串,因为其不连续。 输入格式 输入一行一个字符串 s。 输出格式 输出一行一个整数,表示最少操作次数。 样例输入 #1 friend 样例输出 #1 1 样例输入 #2 friendzdxfriend 样例输出 #2 2 提示 对于 100% 的测试数据,1 ≤ |s| ≤ 10^6,s仅由小写英文字母组成。 请用c++解决这道题。

解析: 这是一道字符串处理的题目,需要我们找出字符串s中所有子串"friend"的位置,然后将其替换为"love"。由于每次操作可以替换长度为4的子串,所以我们可以将每个"friend"子串分为两部分进行替换,即先替换"fri"为"lov",再替换"end"为"e"。这样可以保证每次操作都能将一个"friend"子串完全替换掉。最后输出最少操作次数即可。 代码如下: ```cpp #include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; int ans = 0; for (int i = 0; i < s.size() - 5; i++) { if (s.substr(i, 6) == "friend") { ans++; s.replace(i, 3, "lov"); s.replace(i + 3, 3, "e"); } } cout << ans << endl; return 0; } ``` [2024-08-17 16:30:49 | AI写代码神器 | 260点数解答]

相关提问