链接:https://ac.nowcoder.com/acm/contest/13545/J
来源:牛客网
题目描述
有一种特殊的表达式,特殊点在于
它只允许包含两种不同类型的括号:()和[ ]
它可能开心,也可能不开心
如何判断它开不开心呢,举几个例子,如([ ]())或[([ ][ ])]等为正确的匹配,所以这些表达式开心,但[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配,所以这些表达式不开心
现在你需要检验一个表达式是否开心
以字符串的形式输入一个这样的特殊表达式,如果这个表达式开心,就输出“happy” ,不开心就输出“unhappy”
输入描述:
输入仅一行字符
输出描述:
开心就输出 “happy” ,不开心就输出“unhappy”
示例1
输入
[(])
输出
unhappy
备注:
表达式的字符个数小于255
只能说比赛的时候沙雕了,这么简单的题
#include<iostream>
#include<cstdio>
#include<stdio.h>
#include<cstring>
using namespace std;
char q[310] ;
int top;
int main(){
string s;
cin >> s;
int len = s.length();
for(int i = 0 ; i < len ; i ++){
if(s[i] == '(' || s[i] == '['){
top ++;
q[top] = s[i];
}
else if(s[i] == ')' && q[top] == '(' && top){
top --;
}
else if(s[i] == ']' && q[top] == '[' && top){
top --;
}
else{
cout << "unhappy";
return 0;
}
}
if(top) cout << "unhappy" ;
else cout << "happy" ;
top = 0 ;
return 0;
}