Valid Parentheses

Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.

The brackets must close in the correct order, “()” and “()[]{}” are all valid but “(]” and “([)]” are not.

用戶輸入一串字符,判斷括號是否匹配

#include<stdio.h>
#include<string.h>

int isValid(char* s){
        char* p1 = s; //用一個指針跑源數組
        char ch[30]; //用一個新字符數組作棧保存括號和判斷對應關係
        int i = -1;
        int flag = 0;
        for(; *p1!='\0'; p1++){
           if((*p1 == '(') || (*p1 == '[') || (*p1 == '{')){
                        i++;
                        ch[i] = *p1;
           }else if(*p1 == ')'){
                        if(ch[i] == '('){
                                i--;
                        }
           }else if(*p1 == ']'){
                        if(ch[i] == '['){
                                i--;
                        }
           }else if(*p1 == '}'){
                        if(ch[i] == '{'){
                                i--;
                        }
           }
        }
        if(i == -1){
                flag = 1;
        }
        return flag;
}

int main(void){
        char s[30];
        int result;
        printf("input a string: ");
        fgets(s,sizeof(s),stdin);
        printf("old string: %s",s);
        result = isValid(s);
        if(result == 0){
                printf("not valid!\n");
        }else{
                printf("valid!\n");
        }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章