> For the complete documentation index, see [llms.txt](https://jaywin.gitbook.io/leetcode/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jaywin.gitbook.io/leetcode/solutions/1003-check-if-word-is-valid-after-substitutions.md).

# 1003. Check If Word Is Valid After Substitutions

<https://leetcode.com/problems/check-if-word-is-valid-after-substitutions>

## Description

Given a string `s`, determine if it is **valid**.

A string `s` is **valid** if, starting with an empty string `t = ""`, you can **transform** `t` **into** `s` after performing the following operation **any number of times**:

* Insert string `"abc"` into any position in `t`. More formally, `t` becomes `tleft + "abc" + tright`, where `t == tleft + tright`. Note that `tleft` and `tright` may be **empty**.

Return `true` *if* `s` *is a **valid** string, otherwise, return* `false`.

**Example 1:**

```
**Input:** s = "aabcbc"
**Output:** true
**Explanation:**
"" -> "abc" -> "aabcbc"
Thus, "aabcbc" is valid.
```

**Example 2:**

```
**Input:** s = "abcabcababcc"
**Output:** true
**Explanation:**
"" -> "abc" -> "abcabc" -> "abcabcabc" -> "abcabcababcc"
Thus, "abcabcababcc" is valid.
```

**Example 3:**

```
**Input:** s = "abccba"
**Output:** false
**Explanation:** It is impossible to get "abccba" using the operation.
```

**Example 4:**

```
**Input:** s = "cababc"
**Output:** false
**Explanation:** It is impossible to get "cababc" using the operation.
```

**Constraints:**

* `1 <= s.length <= 2 * 104`
* `s` consists of letters `'a'`, `'b'`, and `'c'`

## ac

```java
```
