Leetcode c语言-Valid Parentheses
2017-09-17 22:46
344 查看
Title:
Given a string containing just the characters
determine if the input string is valid.
The brackets must close in the correct order,
all valid but
not.
这道题对于学习过算法的人而言非常简单,是一个非常典型的栈的应用,先入后出,但是对于没有接触过栈的应用的同学,这道题可能会让他们绞尽脑汁。可能最后可以做出来,但肯定也非常复杂。
那么如何利用栈来做这道题,举个例子:([]),首先是存数据,第一个stack[0]存‘(’,然后判断第二个是不是对应的')',如果是的话,那么就是匹配的,那么栈的深度0减1。如果不是的话,是[,那么栈深度+1,第二个stack存'[',然后接着判断第三个,发现是']',与第二个对应,那么匹配,栈的深度减1,也就是消除了之前第二个存的[,也就是现在栈只剩'('。然后判断第四个),发现和第一个'('对应,那么栈的深度-1,也就是0-1=-1。也就是判断如果最后的栈的深度为-1,那么说明全部匹配,返回true。
运用栈的最大的优点是,可以消除那些已经匹配的,这样就能保证,上下两个一定是要对应的,否则不符合valid,返回false。
solution:
bool isValid(char* s) {
char stack[1000000];
int top=-1;
int len=0;
while(s[len]) {
if (s[len]==')') {
if (top>=0 && stack[top]=='(')
top--;
else
return false;
}
else if (s[len]==']') {
if (top>=0 && stack[top]=='[')
top--;
else
return false;
}
else if (s[len]=='}') {
if (top>=0 && stack[top]=='{')
top--;
else
return false;
}
else {
top=top+1;
stack[top]=s[len];
}
len++;
}
return top==-1;
}
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.
这道题对于学习过算法的人而言非常简单,是一个非常典型的栈的应用,先入后出,但是对于没有接触过栈的应用的同学,这道题可能会让他们绞尽脑汁。可能最后可以做出来,但肯定也非常复杂。
那么如何利用栈来做这道题,举个例子:([]),首先是存数据,第一个stack[0]存‘(’,然后判断第二个是不是对应的')',如果是的话,那么就是匹配的,那么栈的深度0减1。如果不是的话,是[,那么栈深度+1,第二个stack存'[',然后接着判断第三个,发现是']',与第二个对应,那么匹配,栈的深度减1,也就是消除了之前第二个存的[,也就是现在栈只剩'('。然后判断第四个),发现和第一个'('对应,那么栈的深度-1,也就是0-1=-1。也就是判断如果最后的栈的深度为-1,那么说明全部匹配,返回true。
运用栈的最大的优点是,可以消除那些已经匹配的,这样就能保证,上下两个一定是要对应的,否则不符合valid,返回false。
solution:
bool isValid(char* s) {
char stack[1000000];
int top=-1;
int len=0;
while(s[len]) {
if (s[len]==')') {
if (top>=0 && stack[top]=='(')
top--;
else
return false;
}
else if (s[len]==']') {
if (top>=0 && stack[top]=='[')
top--;
else
return false;
}
else if (s[len]=='}') {
if (top>=0 && stack[top]=='{')
top--;
else
return false;
}
else {
top=top+1;
stack[top]=s[len];
}
len++;
}
return top==-1;
}
相关文章推荐
- LeetCode_Easy心得:20. Valid Parentheses(C语言)
- [C语言][LeetCode][20]Valid Parentheses
- leetcode: Longest Valid Parentheses
- [leetcode] Longest Valid Parentheses
- Leetcode: Longest Valid Parentheses
- leetcode20-Valid Parentheses
- LeetCode Valid Parentheses
- leetcode Longest Valid Parentheses
- [Leetcode] #20 Valid Parentheses
- LeetCode Longest Valid Parentheses
- LeetCode Valid Parentheses
- leetcode-20-Valid Parentheses
- LeetCode : Longest Valid Parentheses [java]
- 【JAVA、C++】LeetCode 020 Valid Parentheses
- Leetcode-Longest Valid Parentheses
- leetcode :Valid Parentheses
- [Leetcode] Longest Valid Parentheses
- [LeetCode] Longest Valid Parentheses
- Leetcode 栈 Longest Valid Parentheses
- leetcode:Valid Parentheses