ปัญหา
ได้รับสตริง str1 และ str2 (str2 เป็นสับสตริงของ str1) ลบ str2 ออกจาก str1 ซ้ำๆ จนไม่เหลือ str2 อีก ตรวจสอบว่า str1 จะว่างเปล่าหรือไม่
ตัวอย่าง
str1 = "CCCPPPPPP", str2 = "CPP" → True (ลบ CPP สามครั้ง → ว่าง)
อัลกอริธึม
วนลูปหาและลบ str2 ใน str1 จนกว่าจะหาไม่เจอ หรือ str1 ว่าง
โปรแกรมตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
bool canBecomeEmpty(string str1, string str2) {
while (!str1.empty()) {
size_t pos = str1.find(str2);
if (pos == string::npos) break;
str1.erase(pos, str2.length());
}
return str1.empty();
}
int main() {
cout << canBecomeEmpty("CCCPPPPPP", "CPP"); // 1 (true)
return 0;
}