檢查字串是否可以透過遞迴刪除給定子字串在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
廣告