问题:
给定一个字符串所表示的括号序列,包含以下字符: '(', ')'
, '{'
, '}'
, '['
and ']'
, 判定是否是有效的括号序列。
括号必须依照 "()"
顺序表示, "()[]{}"
是有效的括号,但 "([)]"
则是无效的括号。
样例:
样例 1:
输入:"([)]" 输出:False
样例 2:
输入:"()[]{}" 输出:True
python:
class Solution:
"""
@param s: A string
@return: whether the string is a valid parentheses
"""
def pareToInt(self, temp):
result = 0
if temp == "(":
result = -1
elif temp == ")":
result = 1
elif temp == "[":
result = -2
elif temp == "]":
result = 2
elif temp == "{":
result = -3
elif temp == "}":
result = 3
else:
result = 0
return result
def isValidParentheses(self, s):
# write your code here
if s == "":
return False
storageStr = []
for i in range(len(s)):
pare = self.pareToInt(s[i])
if pare == 0:
continue
else:
if pare < 0:
storageStr.append(pare)
else:
if len(storageStr) == 0:
return False
else:
if pare + storageStr[-1] == 0:
del storageStr[-1]
else:
return False
if len(storageStr) == 0:
return True
else:
return False
C++:
class Solution {
public:
/**
* @param s: A string
* @return: whether the string is a valid parentheses
*/
int pareToInt(char temp)
{
int result = 0;
switch(temp)
{
case '(':
result = -1;
break;
case ')':
result = 1;
break;
case '[':
result = -2;
break;
case ']':
result = 2;
break;
case '{':
result = -3;
break;
case '}':
result = 3;
break;
default:
result = 0;
break;
}
return result;
}
bool isValidParentheses(string &s) {
// write your code here
if(s == "")
{
return true;
}
stack<int> storageStr;
for(int i = 0; i < s.size(); i++)
{
int pare = pareToInt(s[i]);
if(pare == 0)
{
continue;
}else{
if(pare < 0)
{
storageStr.push(pare);
}else{
if(storageStr.empty())
{
return false;
}else{
if(pare + storageStr.top() == 0)
{
storageStr.pop();
}else{
return false;
}
}
}
}
}
if(storageStr.size() == 0)
{
return true;
}else{
return false;
}
}
};