题目地址:Valid Parentheses
题目简介:
给定一个只包含字符'('
, ')'
, '{'
, '}'
, '['
和 ']'
的字符串,判断字符串是否有效。有效的字符串需要满足:
- 左括号必须用相同的右括号闭合;
- 左括号必须以正确的顺序闭合。
- 空字符串认为是合法的
Example 1:
Input: "()"
Output: true
Example 2:
Input: "()[]{}"
Output: true
Example 3:
Input: "(]"
Output: false
Example 4:
Input: "([)]"
Output: false
Example 5:
Input: "{[]}"
Output: true
题目解析:比较经典的栈的使用。
c++代码:
class Solution {
public:
bool isValid(string s) {
if (s.length() % 2)
return false;
else if (s.length() == 0)
return true;
vector<char> v;
for (int i = 0;i < s.length();i++)
{
if (s[i] == '(' || s[i] == '[' || s[i] == '{')
{
v.push_back(s[i]);
}
else
{
if (v.empty())
return false;
char temp = v[v.size() - 1];
if ((s[i] == ')' && temp != '(') || (s[i] == ']' && temp != '[') || (s[i] == '}' && temp != '{'))
return false;
else
v.pop_back();
}
}
if (v.empty())
return true;
return false;
}
};
Python版本:
class Solution:
def isValid(self, s: str) -> bool:
if (len(s) % 2):
return False;
elif (len(s) == 0):
return True;
list = []
for i in range(len(s)):
if (s[i] == '(' or s[i] == '[' or s[i] == '{'):
list.append(s[i])
else:
if (len(list) == 0):
return False;
temp = list[len(list)- 1]
if ((s[i] == ')' and temp != '(') or (s[i] == ']' and temp != '[') or (s[i] == '}' and temp != '{')):
return False;
else:
list.pop(len(list)- 1);
if (len(list) == 0):
return True
return False