- 1、题目描述:
-3、 设计思想:
详细操作流程看下图:
-4、视频讲解链接B站视频讲解
-5、代码:
c++版本:
class Solution { public: /** * * @param s string字符串 * @return bool布尔型 */ bool isValid(string s) { // write code here stack<char>st;//开一个栈 for(int i = 0;i < s.size();i ++){//遍历字符,如果遇见左括号,那么就往栈加入对应的右括号 if(s[i] == '('){ st.push(')'); }else if (s[i] == '{'){ st.push('}'); }else if(s[i] == '['){ st.push(']'); }else if(st.empty()){ return false;//字符还没遍历完就出现栈为空就返回false }else if(st.top() != s[i]){//栈顶元素和c不符合返回false return false; }else{ st.pop(); } } return st.empty();//用来判断这种情况'[' } };
Java版本:
import java.util.*; public class Solution { /** * * @param s string字符串 * @return bool布尔型 */ public boolean isValid (String s) { // write code here Stack<character> st = new Stack<character>();//开一个栈 char []temp = s.toCharArray();///转化为字符数组便于操作 for(char c: temp){//遍历字符,如果遇见左括号,那么就往栈加入对应的右括号 if(c == '(') st.push(')'); else if(c == '{') st.push('}'); else if(c == '[') st.push(']'); else if(st.isEmpty()) return false;//字符还没遍历完就出现栈为空就返回false else if(st.pop()!= c) return false;//栈顶元素和c不符合返回false } return st.isEmpty();//用来判断这种情况'[' } }
Python版本:
# # # @param s string字符串 # @return bool布尔型 # class Stack(object): def __init__(self): # 创建空列表实现栈 self.__list = [] def is_empty(self): # 判断是否为空 return self.__list == [] def push(self,item): # 压栈,添加元素 self.__list.append(item) def pop(self): # 弹栈,弹出最后压入栈的元素 if self.is_empty(): return else: return self.__list.pop() def top(self): # 取最后压入栈的元素 if self.is_empty(): return else: return self.__list[-1] class Solution: def isValid(self , s ): # write code here st = Stack()#开一个栈 for c in s: #遍历字符,如果遇见左括号,那么就往栈加入对应的右括号 if c == '(': st.push(')') elif c == '{': st.push('}') elif c == '[': st.push(']') elif st.is_empty():#字符还没遍历完就出现栈为空就返回false return False elif st.top()!= c:#栈顶元素和c不符合返回false return False else: st.pop() return st.is_empty()#用来判断这种情况'['
JavaScript版本:
/** * * @param s string字符串 * @return bool布尔型 */ function isValid( s ) { // write code here let st=[];//开一个栈 for(let i = 0;i < s.length;i ++){//遍历字符,如果遇见左括号,那么就往栈加入对应的右括号 let c = s[i]; if(c == '(') st.push(')'); else if(c == '{') st.push('}'); else if(c == '[') st.push(']'); else if(st.length==0) return false;//字符还没遍历完就出现栈为空就返回false else if(st.pop()!= c) return false;//栈顶元素和c不符合返回false } return st.length == 0;//用来判断这种情况'[' } module.exports = { isValid : isValid };