列表

详情


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

给你一个字符串 s ,请你判断它是否 有效

字符串 s 有效 需要满足:假设开始有一个空字符串 t = "" ,你可以执行 任意次 下述操作将 t 转换为 s

如果字符串 s 有效,则返回 true;否则,返回 false

 

示例 1:

输入:s = "aabcbc"
输出:true
解释:
"" -> "abc" -> "aabcbc"
因此,"aabcbc" 有效。

示例 2:

输入:s = "abcabcababcc"
输出:true
解释:
"" -> "abc" -> "abcabc" -> "abcabcabc" -> "abcabcababcc"
因此,"abcabcababcc" 有效。

示例 3:

输入:s = "abccba"
输出:false
解释:执行操作无法得到 "abccba" 。

 

提示:

相似题目

有效的括号

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: bool isValid(string s) { } };

golang 解法, 执行用时: 4 ms, 内存消耗: 4 MB, 提交时间: 2022-12-05 18:06:43

func isValid(s string) bool {
    stack := []byte{'0', '0'}

    for _, char := range s {
        len_ := len(stack)

        if char == 'c' && stack[len_ - 1] == 'b' && stack[len_ -2] =='a' {
            
            stack = stack[:len_ - 2]
        
        } else {
         
            stack = append(stack, byte(char))
        
        }
    }

    return len(stack) == 2
}

golang 解法, 执行用时: 4 ms, 内存消耗: 4 MB, 提交时间: 2022-12-05 18:05:48

import "bytes"

func isValid(s string) bool {
    st := []byte{}
    for i:=0;i<len(s);i++ {
        st = append(st, s[i])
        if len(st) >= 3 && bytes.Equal(st[len(st)-3:],[]byte("abc")){
            st = st[:len(st)-3]
        }
    }
    return len(st) == 0 
}

java 解法, 执行用时: 19 ms, 内存消耗: 41.2 MB, 提交时间: 2022-12-05 18:05:15

class Solution {
    public boolean isValid(String S) {
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < S.length(); i++) {
            if (S.charAt(i) == 'c') {
                if (stack.empty() || stack.pop() != 'b')
                    return false;
                if (stack.empty() || stack.pop() != 'a')
                    return false;
            } else {
                stack.push(S.charAt(i));
            }
        }
        return stack.isEmpty();
    }
}

python3 解法, 执行用时: 60 ms, 内存消耗: 15.4 MB, 提交时间: 2022-12-05 17:59:58

class Solution:
    def isValid(self, s: str) -> bool:
        stack = list()
        for i in s:
            if i != 'c':
                stack.append(i)
            else:
                if len(stack) >= 2:
                    if stack[-1] == 'b' and stack[-2] == 'a':
                        stack.pop()
                        stack.pop()
                    else:
                        return False
                else:
                    return False
        return True if not stack else False

python3 解法, 执行用时: 40 ms, 内存消耗: 15.1 MB, 提交时间: 2022-12-05 17:58:42

class Solution:
    def isValid(self, s: str) -> bool:
        while s.find('abc') != -1:
            s = s.replace('abc', '')
        return s == ''

python3 解法, 执行用时: 44 ms, 内存消耗: 15 MB, 提交时间: 2022-12-05 17:57:53

class Solution:
    def isValid(self, s: str) -> bool:
        while 'abc' in s:
            s = s.replace('abc', '')
            if s == '':
                return True
        return False

上一题