leetcode 20 简单括号匹配
今天开始,记录自己做的leetcode的题。 使用c#
第一次发博,本人大四实习生,水平有限。有错望海涵。
思路
- 括号有三种:
[] 、{} 、()
空字符串为有效字符串
括号之内可以包含括号
从左到右开始匹配括号,第一个匹配完成的括号一定是最里面的那组括号
使用栈,先放入第一个字符,之后判断接下来的字符与栈顶字符是否匹配,匹配则出栈,不匹配入栈,最后栈为空则匹配成功
代码
c#:
public class Solution {
public bool IsValid(string s) {
if(s.Length==0){
return true;
}
Stack<char> stack=new Stack<char>();
stack.Push(s[0]);
for(int i=1;i<s.Length;i++){
char c=Match(s[i]);
if(stack.Count!=0){
if(c==stack.Peek()){
stack.Pop();
}else{
stack.Push(s[i]);
}
}else{
stack.Push(s[i]);
}
}
if(stack.Count==0){
return true;
}else{
return false;
}
}
public char Match(char c){
switch(c){
case '(': return ')'; break;
case '[': return ']'; break;
case ')': return '('; break;
case ']': return '['; break;
case '{': return '}'; break;
default : return '{'; break;
}
}
}
Match方法用来匹配字符