括号配对问题
来源:互联网 发布:美国新屋开工数据 编辑:程序博客网 时间:2024/06/01 09:39
题目
描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0
输出
每组输入数据的输出占一行
如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([])
样例输出
No
No
Yes
解法
用数组模拟栈,左括号进栈,如果遇到匹配的右括号,就弹栈.
代码
#include <stdio.h>#include <stdlib.h>#include <string.h>int braceMatching(char* arr, int len){ char c[10010]; c[0] = '#'; int j = 1; for(int i = 0; i < len; i++) { //遇到左括号进栈 if(arr[i] == '(' || arr[i] == '[') { c[j] = arr[i]; j++; } else { if((arr[i] == ')' && c[j - 1] == '(') || (arr[i] == ']' && c[j - 1] == '[')) //遇到右括号,如果匹配最后一个左括号,c数组回退一位,相当于出栈 j--; else { //如果不匹配最后一个左括号,直接返回匹配错误 return 0; } } } return j;}int main(){ int T; scanf("%d", &T); while(T--) { char arr[10001]; scanf("%s", arr); printf("%s\n", braceMatching(arr, strlen(arr)) == 1 ? "Yes" : "No"); } return 0;}
阅读全文
0 0
- 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- NYOJ - 括号配对问题
- nyoj 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- [ACM]括号配对问题
- NYOJ2 括号配对问题
- 括号配对问题
- 2 括号配对问题
- 括号配对问题
- 括号配对问题
- 【括号配对问题 2】
- 在lua环境中使用protobuf
- 在IntelliJ idea中使用fiddler捕获Web请求
- 事务无法回滚(mysql数据库存储引擎问题)
- javaSE_8系列博客——重要的基础Java类——多线程--2--进程和线程
- Android--百度地图学习笔记(一)
- 括号配对问题
- Java学习路线
- js中的事件委托或是事件代理详解
- 推荐技术资料
- Node.js的初探
- 自定义属性入门和详解
- python发邮件之报授权码的错误
- AS打包jar简洁方法,aar文件生成方法
- react的es6写法