题目描述
- 判断字符串 s 是否为字符串 t 变换而来
- t 初始为空串
- 可以往 t 中插入任意次 "abc",可以从中间插,也可以从两边的临界位置插
示例
输入:s = "aabcbc"
输出:true
输入:s = "abcabcababcc"
输出:true
输入:s = "abccba"
输出:false
题解
- 思路
- 用栈,把 "abc" 弹掉(类比“括号”的题)
- 用正则或 replace 循环替换掉 "abc",判断最后是否为空(算法题不想用这种)
- 双指针也行,但没有栈方便
func isValid(s string) bool {stk := [20010]rune{}tt := -1for _, c := range s {if c != 'c' {tt ++stk[tt] = c} else {if tt >= 1 && stk[tt - 1] == 'a' && stk[tt] == 'b' {tt -= 2} else {tt ++stk[tt] = c}}}return tt == -1
}
