20. Valid Parentheses

来源:互联网 发布:人才外包知乎 编辑:程序博客网 时间:2024/05/29 04:58

20. Valid Parentheses
Difficulty: Easy

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.

给定仅包含字符’(‘、’)’、’{‘、’}’、’[‘、’]’的字符串,确定输入字符串是否有效(配对)。
如:”()”、”()[]{}”、”[(){}]”、”[({(())}[()])]”返回true,
而”(]”、”([)]”返回false。

bool isValid(char* s)  {    int i,k;    int slen=strlen(s);    char* temps;    if(slen%2)        return false;    temps=(char*)malloc(slen*sizeof(char));    k=-1;    for(i=0;i<slen;i++)    {        if(s[i]=='(' ||s[i]=='[' ||s[i]=='{')   //若为左括号,存到temps中        {            k++;            temps[k]=s[i];        }        else if(k>=0)        {            if(s[i]-temps[k]==1 || s[i]-temps[k]==2)    //若为右括号,判断是否成对                k--;            else            {                free(temps);                return false;            }        }        else    //先出现右括号        {            free(temps);            return false;        }    }    free(temps);    if(k>-1)   //还有未消掉的左括号        return false;    return true;}
0 0