题目描述:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: “()”
输出: true
示例 2:
输入: “()[]{}”
输出: true
示例 3:
输入: “(]”
输出: false
示例 4:
输入: “([)]”
输出: false
示例 5:
输入: “{[]}”
输出: true
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解答:
bool isValid(char * s)
{
if(NULL == s || '\0' == s[0])
{
return true;
}
int count = 0;
int i = 0;
int len = 0;
len = strlen(s);
char *temp_srt = (char*)malloc(sizeof(char)*len);
char *p = s;
for(i = 0;i<len;i++)
{
if('(' == p[i] || '{' == p[i] || '[' == p[i])
{
temp_srt[count] = p[i];
count++;
}
else if(')' == p[i] || '}' == p[i] || ']' == p[i])
{
if(count>0)
{
if(temp_srt[count-1] == p[i]-1 || temp_srt[count-1] == p[i]-2)
{
count--;
}
else
{
free(temp_srt);
return false;
}
}
else
{
free(temp_srt);
return false;
}
}
}
free(temp_srt);
return (!count);
}
运行结果: