检查字符串是否可以通过递归删除给定子字符串在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
广告