Check If Word Is Valid After Substitutions
Description
We are given that the string "abc"
is valid.
From any valid string V
, we may split V
into two pieces X
and Y
such that X + Y
(X
concatenated with Y
) is equal to V
. (X
or Y
may be empty.) Then, X + "abc" + Y
is also valid.
If for example S = "abc"
, then examples of valid strings are: "abc", "aabcbc", "abcabc", "abcabcababcc"
. Examples of invalid strings are: "abccba"
, "ab"
, "cababc"
, "bac"
.
Return true
if and only if the given string S
is valid.
Example 1:
Example 2:
Example 3:
Example 4:
Note:
1 <= S.length <= 20000
S[i]
is'a'
,'b'
, or'c'
Solution
Scan the characters one by one. Store them in a stack. If we see an a
or b
, push it to the stack. If we see a c
, check whether previous two characters are ab
. If yes, pop two characters (cancel abc
). Otherwise, the string is invalid.
The string is also invalid if the stack is not empty when we have scanned all characters. Because some a/b
s can't be cancelled.
Last updated