LeetCode学习笔记:有效的括号

//错误代码

package CH02;
import java.util.Stack;
public class Solution {
    public boolean isValid(String s) {
    Stack<Character> stack=new Stack<Character>();
    for(int i=0;i<s.length();i++){
        char c=s.charAt(i);
        if(c=='('||c=='['||c=='{'){
            stack.push(c);
        }else{
            if(stack.isEmpty()){
                return false;
            }else{
                char top=stack.pop();
                if(c==')'&&top=='('||c==']'&&top=='['||c=='}'&&top=='{'){
                    return true;
                    //这里出错是因为,弹栈时用top与c比较,
                    如果括号匹配的话,应该进入下一次循环,
                    所以应该用不等号进行判断,如果不等的话
                    直接输出结果false,如果像现在这样写的话,
                    如果top与c匹配,直接就输出true,
                    就不再进行比较了,而正确的应该是
                    如果不匹配直接输出false,如果匹配的话
                     继续循环
                }else{
                    return false;
                }
            }
        }
    }
    return stack.isEmpty();

    }
}

//正确代码
package CH02;
import java.util.Stack;
public class Solution {
    public boolean isValid(String s) {
    Stack<Character> stack=new Stack<Character>();
    for(int i=0;i<s.length();i++){
        char c=s.charAt(i);
        if(c=='('||c=='['||c=='{'){
            stack.push(c);
        }else{
            if(stack.isEmpty()){
                return false;
            }else{
                char top=stack.pop();
               if(c==')'&&top!='('){
                   return false;
               }
               if(c=='}'&&top!='{'){
                   return false;
               }
               if(c==']'&&top!='['){
                   return false;
               }
            }
        }
    }
    return stack.isEmpty();

    }
}

发布了7 篇原创文章 · 获赞 0 · 访问量 114

猜你喜欢

转载自blog.csdn.net/qq_43876433/article/details/100050339
今日推荐