题目:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
实例:
输入: “()” 输出: true 输入: “([)]” 输出: false
思想:
使用stack压栈出栈temp.push(s[i]); temp_char = temp.top(); temp.pop(); //弹出栈顶元素
最后要判断是否temp是否为空,不为空,则return false;
代码:
class Solution {
public:
bool isValid(string s) {
//使用压栈出栈
stack <char> temp;
char temp_char;
for(int i = 0; i < s.length(); i++)
{
if((s[i] == '(') || (s[i] == '{') || (s[i] == '['))
temp.push(s[i]);
else
{
if(temp.empty())
return false;
temp_char = temp.top();
temp.pop(); //弹出栈顶元素
switch(s[i]){
case ')':
{
if(temp_char != '(') return false;
else
break;
}
case '}':
{
if(temp_char != '{') return false;
else
break;
}
case ']':
{
if(temp_char != '[') return false;
else
break;
}
default:
return false;
}
}
}
//当最后temp不为空时
if(!temp.empty())
return false;
return true;
}
};