|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
- }
复制代码
|
|