-
题目链接 https://leetcode-cn.com/problems/check-if-word-is-valid-after-substitutions/submissions/
-
题目描述
-
给定有效字符串
"abc"
。对于任何有效的字符串
V
,我们可以将V
分成两个部分X
和Y
,使得X + Y
(X
与Y
连接)等于V
。(X
或Y
可以为空。)那么,X + "abc" + Y
也同样是有效的。例如,如果
S = "abc"
,则有效字符串的示例是:"abc"
,"aabcbc"
,"abcabc"
,"abcabcababcc"
。无效字符串的示例是:"abccba"
,"ab"
,"cababc"
,"bac"
。如果给定字符串
S
有效,则返回true
;否则,返回false
。 -
示例 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
-
-
解题思路
- 栈:只有在当从栈顶向下以此为c, b , a时出栈这三个元素,其他情况都进栈。
-
代码
-
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
-
leetcode 1003. 检查替换后的词是否有效
猜你喜欢
转载自blog.csdn.net/qq_38043440/article/details/88583171
今日推荐
周排行