问题描述】
牛牛有一个字符串,这个字符串是由左括号 ( 和右括号 ) 组成的。这样的字符串
又叫做括号序列。
牛牛想知道,他的括号序列是不是一个回文括号序列。与一般的回文串不同,牛牛
的回文括号序列定义为“看上去”是回文的括号序列。例如牛牛认为,)()(是回文括号序列,而 )(()不是 回文括号序列。
形式化地说,一个长度为 k 的括号序列是回文的,当且仅当对于所有的 i(1 ≤ i ≤ k)
从左向右数的第 i 个字符和从右向左数的第 i 个字符是相反的。
【输入格式】
从文件 brackets.in 中读入数据。
第一行包含一个正整数 T(1 ≤ T ≤ 100) ,表示这个测试点内的数据组数。
接下来 T 行,每行一个长度不超过 100 的字符串,表示牛牛的括号序列。
【输出格式】
输出到文件 brackets.out 中。
输出 T 行,依次表示 T 组数据的答案,如果这个括号序列是回文括号序列,那么
这一行输出 Yes ,否则输出 No 。
【样例输入】
2
())(
(())
【样例输出】
No
Yes
考试T1,每日份的开心
不慌,一个循环的事
开心就好
下面给出代码:
#include<iostream> #include<algorithm> #include<cstdio> #include<cstdlib> #include<cstring> #include<string> #include<cmath> using namespace std; inline int rd(){ int x=0,f=1; char ch=getchar(); for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1; for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0'; return x*f; } inline void write(int x){ if(x<0) putchar('-'),x=-x; if(x>9) write(x/10); putchar(x%10+'0'); return ; } char s[10006]; int n; int main(){ n=rd(); for(int i=1;i<=n;i++){ scanf("%s",s+1); int len=strlen(s+1),f=0; for(int i=1;i<=len;i++){ if(s[i]==s[len-i+1]){ printf("No "); f=1; break; } } if(!f) printf("Yes "); } return 0; }