检查字符串是否可以通过递归删除给定子字符串在C++中变为空
假设我们有两个字符串,str1 和 str2。str2 是 str1 的子字符串,我们可以从 str1 中删除 str2。str2 可能会在 str1 中出现多次。我们的目标是确定如果我们多次从 str1 中删除 str2,str1 是否会变成空字符串。如果可能,我们返回 1,否则返回 0。
因此,如果输入类似于 str1 = "CCCPPPPPP",str2 = "CPP";则输出为真。
为了解决这个问题,我们将遵循以下步骤:
- 当 str1 的大小 > 0 时,执行:
- index := 返回 str2 在 str1 中的起始位置。
- 如果 index 等于 -1,则:
- 退出循环。
- 从 str1 中删除 str2。
- 如果 str1 的大小等于 0,则返回 1,否则返回 0。
示例 (C++)
让我们看看下面的实现来更好地理解:
#include<bits/stdc++.h>
using namespace std;
bool solve(string str1, string str2) {
while (str1.size() > 0) {
int index = str1.find(str2);
if (index == -1)
break;
str1.erase(index, str2.size());
}
return (str1.size() == 0);
}
int main() {
string str1 = "CCCPPPPPP", str2 = "CPP";
cout<<solve(str1, str2)<<endl;
return 0;
}输入
"CCCPPPPPP", "CPP"
输出
1
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP