目录
问题描述:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = "()" 输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]" 输出:false
实现代码:
class Solution {
public:
bool isValid(string s)
{
if(s.size()%2!=0)
{
return false;//若字符串不为奇数,一定不满足条件
}
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(']');
//每次遇到右括号,判断与栈顶元素是否,相同则出栈顶元素,反之直接返回false,不符合要求
else if(st.empty()||st.top()!=s[i]) return false;
else
{
st.pop();
}
}
return st.empty();
}
};
原理思路:
简单题,很明显要用到栈,如果字符串长度不能被2整除,明显直接就可以判断此字符串不符合条件,返回false,定义一个栈,循环遍历字符串,若遇到左括号就将其对应的右括号入栈,若遇到右括号,就判断栈是否为空和与栈顶字符是否相同,栈为空或与栈顶字符不同,则直接返回false,若相同,我们就将栈顶字符出栈,有点像消消乐的感觉,不过这里是有顺序的消除。
判断有效括号字符串的C++代码实现
该文介绍了一个C++程序,用于判断给定的括号字符串是否有效。通过使用栈数据结构,检查字符串中的左右括号是否匹配并按正确顺序闭合。如果字符串长度为偶数且所有括号能正确配对,程序返回true,否则返回false。
223

被折叠的 条评论
为什么被折叠?



