題目:給敏感詞 `w`、長文本 `p`,反覆尋找 `w` 在 `p` 中**第一次出現**並刪除,直到無 `w` 為止。長度至 5×10⁶。
「第一次出現」指**最左邊**最早出現的位置。刪除後左右兩部分拼接,**新邊界可能形成新的 `w`** 需繼續刪除(如樣例 `abc` + `aaabcbc` → 刪中間 `abc` → `aabc` → 刪 `abc` → `a`)。
while (j > 0 && c != w[j]) j = next[j-1];
if (c == w[j]) j++;
stack.push({c, j});
if (j == m) { // 匹配到 w
pop m elements; // 刪除
j = stack.empty() ? 0 : stack.top().matched_len; // 回溯狀態
}
樣例驗證:`w=abc, p=aaabcbc` → 堆疊流程正確產出 `a`。