leetcode 1003. 检查替换后的词是否有效

  1. 题目链接 https://leetcode-cn.com/problems/check-if-word-is-valid-after-substitutions/submissions/

  2. 题目描述

    1. 给定有效字符串 "abc"

      对于任何有效的字符串 V,我们可以将 V 分成两个部分 XY,使得 X + YXY 连接)等于 V。(X 或 Y 可以为空。)那么,X + "abc" + Y 也同样是有效的。

      例如,如果 S = "abc",则有效字符串的示例是:"abc""aabcbc""abcabc""abcabcababcc"无效字符串的示例是:"abccba""ab""cababc""bac"

      如果给定字符串 S 有效,则返回 true;否则,返回 false

    2. 示例 1:

      输入:"aabcbc"
      输出:true
      解释:
      从有效字符串 "abc" 开始。
      然后我们可以在 "a" 和 "bc" 之间插入另一个 "abc",产生 "a" + "abc" + "bc",即 "aabcbc"。
      

      示例 2:

      输入:"abcabcababcc"
      输出:true
      解释:
      "abcabcabc" 是有效的,它可以视作在原串后连续插入 "abc"。
      然后我们可以在最后一个字母之前插入 "abc",产生 "abcabcab" + "abc" + "c",即 "abcabcababcc"。
      

      示例 3:

      输入:"abccba"
      输出:false
      

      示例 4:

      输入:"cababc"
      输出:false
  3. 解题思路

    1. 栈:只有在当从栈顶向下以此为c, b , a时出栈这三个元素,其他情况都进栈。
  4. 代码

    1. class Solution:
          def isValid(self, S: str) -> bool:
              res = []
              for s in S:
                  if len(res) < 2 or s != 'c':
                      res.append(s)
                  elif s == 'c' and res[-1] == 'b' and res[-2] == 'a':
                      res.pop()
                      res.pop()       
              return len(res) == 0
      

猜你喜欢

转载自blog.csdn.net/qq_38043440/article/details/88583171