1. 程式人生 > >leetcode 20. 有效的括號 C語言版

leetcode 20. 有效的括號 C語言版

給定一個只包括 '('')''{''}''['']' 的字串,判斷字串是否有效。

有效字串需滿足:

  1. 左括號必須用相同型別的右括號閉合。
  2. 左括號必須以正確的順序閉合。

注意空字串可被認為是有效字串。

 

這個可以用一個棧來解決,遇到前半個括號就進棧,遇到後半個括號,就出棧,並進行匹配。

bool isValid(char* s) {
    char a[1000];
    int i=0,j=-1;
    while(s[i]!='\0')
    {
        if(s[i]=='(')
            a[++j]='(';
        else if(s[i]=='[')
            a[++j]='[';
        else if(s[i]=='{')
            a[++j]='{';
        else if(s[i]==']')
        {
            if(j==-1||a[j]!='[')
                j=-2;
            else
                j--;
        }
        else if(s[i]=='}')
        {
            if(j==-1||a[j]!='{')
                j=-2;
            else
                j--;
        }
        else if(s[i]==')')
        {
            if(j==-1||a[j]!='(')
                j=-2;
            else
                j--;
        }
        if(j==-2)
            break;
        i++;        
    }
    if(j!=-1)
        return false;
    else 
        return true;
}