题目不知道说什么,大概就是遇到一对匹配的括号,就把里面的字母删除,要求字符串种的字母不能重复出现。

#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;
}

作者 crxis

发表回复