马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 黎羽轩 于 2022-7-24 09:47 编辑
题目给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([)]"
输出:false
示例 5:
输入:s = "{[]}"
输出:true
提示:
1 <= s.length <= 104
s 仅由括号 '()[]{}' 组成
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/valid-parentheses
解题bool isValid(char * s){
int n = strlen(s); //计算字符串长度
//定义一个栈并初始化
char stack[n];
int top = 0;
//把s中的数据判断是否可以入栈
for(int i = 0;i<n;i++)
{
char ch = s[i]; //将数据存入ch数组
if(ch == '(' || ch == '[' || ch=='{')
{
//满足括号左半边的入栈
stack[top++] = ch;
}
else
{
char ch1 = 'u';
if(top > 0)
{
//
ch1 = stack[top-1];
}
if( (top > 0) &&
(ch1 == '(' && ch == ')') ||
(ch1 == '[' && ch ==']') ||
(ch1 =='{' && ch == '}')
)
{
//出栈
top--;
}
else
{
return false;
}
}
}
//判空
if(top == 0)
{
return true;//完成
}
else
{
return false;
}
}
|