当前位置:网站首页>[exercise-1] (UVA 673) parentheses balance/ balanced brackets (stack)

[exercise-1] (UVA 673) parentheses balance/ balanced brackets (stack)

2022-07-06 15:56:00 Flame car

A . Parentheses Balance

Description

You are given a string consisting of parentheses () and []. A string of this type is said to be correct:

(a ) if it is the empty string

(b ) if A and B are correct, AB is correct,

(c ) if A is correct, (A) and [A] is correct.

Write a program that takes a sequence of strings of this type and check their correctness. Your program can assume that the maximum string length is 128.

Input

The file contains a positive integer n and a sequence of n strings of parentheses ‘()’ and ‘[]’, one string a line.

Output

A sequence of ‘Yes’ or ‘No’ on the output file.

Samples

Input
3
([])
(([()])))
([()])()
Output
Yes
No
Yes

What do you mean :
Enter a include "()“ and ”[]" The bracket sequence of , Judge whether it is legal . The rules :
① Empty string method
② If A and B It's all legal , be AB legal
③ If A Legal principle (A) and [A] It's all legal

AC Code :

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stack>
using namespace std;
int n;
int main()
{
    
        cin >> n;
        getchar();
        while(n--){
    
            string s;
            stack<char>st;
            getline(cin,s);
            int len = s.size();
            for(int i = 0; i < len; i++)
			{
    
                if(st.empty()) 
					st.push(s[i]);
                else
				{
    
                    if((s[i] == ')' && st.top() == '(') || (s[i] == ']' && st.top() == '['))
                        st.pop();
                    else 
						st.push(s[i]);
                }
            }
            if(st.empty()) 
				cout << "Yes" << endl;
            else 
				cout << "No" << endl;
        }
    return 0;
}

It's quite speechless , This question is too annoying …… Thought it was a water problem , I didn't expect it to be a dirty water problem , How annoying .
If you understand the meaning of the topic, it should not be very difficult ( Probably ), I found out when I wrote this blog Empty strings are also legal characters !!
No wonder you have to getline() Input , This is the input empty string .

But why do I have to write one before putchar() ??? Is not very good , If there is a big man, you can tell me (T^T).
These two points are simply disgusting, I guess , There is nothing to say about an exam stack (stack) I have to do all these fancy things …… I'm not good at learning !

thought :
① Use the stack to store "(" and “[”
② If you come across ")" It depends on whether the top of the stack is "(", If it is "[“ Or the stack is empty , Is an illegal string .
③ If you come across ”]" It depends on whether the top of the stack is "[", If it is "(" Or the stack is empty , Is an illegal string .

Thought is like this , How to write the code depends on you !

原网站

版权声明
本文为[Flame car]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060919552698.html