leetcode1003-检查替换后的词是否有效

题目描述

  • 判断字符串 s 是否为字符串 t 变换而来
  • t 初始为空串
  • 可以往 t 中插入任意次 "abc",可以从中间插,也可以从两边的临界位置插

示例

输入:s = "aabcbc"
输出:true
输入:s = "abcabcababcc"
输出:true
输入:s = "abccba"
输出:false

题解

  • 思路
    1. 用栈,把 "abc" 弹掉(类比“括号”的题)
    2. 用正则或 replace 循环替换掉 "abc",判断最后是否为空(算法题不想用这种)
    3. 双指针也行,但没有栈方便
func isValid(s string) bool {
    stk := [20010]rune{}
    tt := -1
    for _, 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
}
posted @ 2025-08-21 21:56  余越  阅读(11)  评论(0)    收藏  举报