Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบว่าสตริงว่างเปล่าหลังลบสับสตริงซ้ำๆ ใน C++


ปัญหา

ได้รับสตริง 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;
}