题目不知道说什么,大概就是遇到一对匹配的括号,就把里面的字母删除,要求字符串种的字母不能重复出现。
#include <stdio.h>
#define N 300005
int n, m, i, j, k, a[N], b[N];
char c, s[N], f[130];
int main(){
scanf("%s", s+1);
for(i=1; c=s[i]; i++){
if(c == '(') a[++m] = n;//该左括号的字母再此后
else if(c != ')'){
if(f[c]) break;//不允许重复
f[c] = b[++n] = c;//放入字母
}
else{
while(n > a[m]) f[b[n--]] = 0;
m--;//情况括号内的字母
}
}
if(c) printf("No\n");
else printf("Yes\n");
return 0;
}