本文主要是介绍HDU 5479 Scaena Felix(栈的括号匹配),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
description
给定左括号和右括号的字符串,输出左右括号匹配成功的个数。
Input
第一行一个整数T,代表有T个用例。每个用例只包含‘(’和‘)’,字符串S的长度:
1≤|S|≤1,000。
Output
输出匹配成功个数。
Sample Input
3
()
((((
(())
Sample Output
1
0
2
solution
栈的应用板题。注意将栈和字符串声明为局部变量,若设置为全局变量需要清空栈,否则会出错。
#include <iostream>
#include <cstring>
#include <stack>
#include <cstdio>
using namespace std;
int main()
{// freopen("in.txt", "r", stdin);int N;while (~scanf("%d", &N)){for (int i = 0; i < N; i++){char str[1111];stack<char> S;scanf("%s", str);int len = strlen(str);int ans = 0;for (int i = 0; i < len; i++){if (str[i] == '(')S.push(str[i]);if (str[i] == ')'){if (!S.empty()){S.pop();ans++;}}}printf("%d\n", ans);}}return 0;
}
这篇关于HDU 5479 Scaena Felix(栈的括号匹配)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!