zoukankan      html  css  js  c++  java
  • 力扣(LeetCode) 20. 有效的括号

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。

    有效字符串需满足:

    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
    注意空字符串可被认为是有效字符串。

    示例 1:

    输入: "()"
    输出: true

    示例 2:

    输入: "()[]{}"
    输出: true

    示例 3:

    输入: "(]"
    输出: false

    示例 4:

    输入: "([)]"
    输出: false

    示例 5:

    输入: "{[]}"
    输出: true

    思路1 list 模拟栈,只能在栈顶进行入栈和出栈

    思路2 使用Stack栈

    Java版(思路1)

    class Solution {
        public boolean isValid(String s) {
            boolean flag = true;
    		List<String> list = new ArrayList<>();
    		for(int i=0;i<s.length();i++) {
    			String temp = s.substring(i, i+1);
    			if( temp.equals("(") || temp.equals("[") || temp.equals("{")) {
    				//System.out.println("add---"+temp);
    				list.add(temp);
    			}else if(temp.equals(")")) {
    				if(list.size()>0 &&  list.get(list.size()-1).equals("(")) {
    					//System.out.println("delete---"+list.get(list.size()-1));
    					list.remove(list.size()-1);
    				}else {
    					flag = false;
    					break;
    				}
    			}else if(temp.equals("]")) {
    				if(list.size()>0 &&  list.get(list.size()-1).equals("[")) {
    					//System.out.println("delete---"+list.get(list.size()-1));
    					list.remove(list.size()-1);
    				}else {
    					flag = false;
    					break;
    				}
    			}else if(temp.equals("}")) {
    				if(list.size()>0 &&  list.get(list.size()-1).equals("{")) {
    					//System.out.println("delete---"+list.get(list.size()-1));
    					list.remove(list.size()-1);
    				}else {
    					flag = false;
    					break;
    				}
    			}
    		}
    		if(flag && list.size()==0) {
    			//System.out.println(true);
                return true;
    		}else {
    			//System.out.println(false);
                return false;
    		}
    		
        }
    }
    

    Java版(思路2)

    class Solution {
        public boolean isValid(String s) {
           Stack<String> stack = new Stack<>();
    		for(int i=0;i<s.length();i++) {
    			String temp = s.substring(i, i+1);
    			if(temp.equals("(") || temp.equals("[") || temp.equals("{")) {
    				stack.push(temp);
    			}else if(!stack.isEmpty() &&   temp.equals(")")  &&  stack.pop().equals("(")) {
    			}else if(!stack.isEmpty() &&   temp.equals("]")  &&  stack.pop().equals("[")) {
    			}else if(!stack.isEmpty() &&   temp.equals("}")  &&  stack.pop().equals("{")) {
    			}else {
    				return false;
    			}
    		}
    		if(stack.isEmpty()) {
    			return true;
    		}else {
    			return false;
    		} 
        }
    }
    

    运行结果

  • 相关阅读:
    ES5 05 Function扩展
    ES5 04 Array扩展
    ES5 03 Object扩展
    ES5 02 JSON对象
    ES5 01 严格模式
    Oracle 数据库复制
    PB函数大全
    Handle( ) //得到PB窗口型对象的句柄
    PB赋值粘贴 多个DW进行update
    pb 11 数据窗口空白,预览pb崩溃解决方案
  • 原文地址:https://www.cnblogs.com/lick468/p/10686798.html
Copyright © 2011-2022 走看看