class Solution {
public:
bool isValid(string s) {
}
};
1003. 检查替换后的词是否有效
给你一个字符串s
,请你判断它是否 有效 。
字符串 s
有效 需要满足:假设开始有一个空字符串 t = ""
,你可以执行 任意次 下述操作将 t
转换为 s
:
"abc"
插入到 t
中的任意位置。形式上,t
变为 tleft + "abc" + tright
,其中 t == tleft + tright
。注意,tleft
和 tright
可能为 空 。如果字符串 s
有效,则返回 true
;否则,返回 false
。
示例 1:
输入:s = "aabcbc" 输出:true 解释: "" -> "abc" -> "aabcbc" 因此,"aabcbc" 有效。
示例 2:
输入:s = "abcabcababcc" 输出:true 解释: "" -> "abc" -> "abcabc" -> "abcabcabc" -> "abcabcababcc" 因此,"abcabcababcc" 有效。
示例 3:
输入:s = "abccba" 输出:false 解释:执行操作无法得到 "abccba" 。
提示:
1 <= s.length <= 2 * 104
s
由字母 'a'
、'b'
和 'c'
组成相似题目
原站题解
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