- 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
};
京公网安备 11010502036488号