【
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
】
括号相关的题,要么用栈要么用动态规划,这道题就是用栈。同时用到了哈希来匹配对应左右括号。
C语言如何用数组模拟栈,此题是一个简单的样板。
bool isValid(char * s){
int stack[8096] = {0};
int i;
int top = 0;
int len = strlen(s);
char temp;
int charvert[127] = {0};
charvert[')'] = '(';
charvert[']'] = '[';
charvert['}'] = '{';
if (len == 0) {
return true;
}
for (i = 0; i < len; i++) {
if ((s[i] == '(') || (s[i] == '{') || (s[i] == '[')) {
top++;
stack[top] = s[i];
}
if ((s[i] == ')') || (s[i] == ']') || (s[i] == '}')) {
if (stack[top] != charvert[s[i]]) {
return false;
}
top--;
}
}
if (top != 0) {
return false;
} else {
return true;
}
}