leetcode

    xiaoxiao2023-10-07  157

    给定有效字符串 "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。

    利用栈来实现,如果扫描到a就入栈两个不同字符,如果遇到b或者c依次弹出两个不同的字符

    class Solution: """ 给定字符串abc,判断能否得到传入的字符串 转换的过程就是把字符串中间插入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"。 """ def isValid(self, S: str) -> bool: stack=[] for c in S: if c=='a': stack.append('#') stack.append('*') else: if not stack: return False if c=='b': if stack[-1] != '*': return False if c=='c': if stack[-1]!='#': return False stack.pop() return not stack

    看了下其他人的解法,发现调用replace效率好像更高...

    def isValid(self, S: str) -> bool: while S != "" and "abc" in S: S=S.replace("abc","")#调用系统的函数,直接去除 return S==""

     

    最新回复(0)