• leetcode20.有效的括号(hashmap使用,键值匹配)


    public class LeetCode20 {
    //Hashmap(key,value)匹配键值,Character为字符类
    private HashMap<Character,Character> map;
    //构造类
    public LeetCode20(){
    this.map=new HashMap<Character, Character>();
    this.map.put(')','(');
    this.map.put(']','[');
    this.map.put('}','{');
    }

    public boolean effectiveBracket(String s){
    //初始化一个字符栈
    Stack<Character> stack=new Stack<Character>();
    for(int i=0;i<s.length();i++){
    char c=s.charAt(i);
    //如果当前字符是右括号(判断是不是key)
    if(this.map.containsKey(c)){
    //判断栈堆是否为空墨盒,如果为空则添加#,如果不为空则推出栈顶元素赋值给topElement,pop推出栈顶元素(为空时加#目的是防止第一个字符即为右括号,使之可以快速退出)
    char topElement=stack.empty()?'#':stack.pop();
    //如果这个括号的映射不匹配栈顶的映射,则返回false(判断栈顶元素和当前字符是否匹配)get(key)返回value
    if(topElement!=this.map.get(c)){
    return false;}
    //如果是左括号则推入栈堆,push推入栈顶元素
    }else {
    stack.push(c);
    }
    }
    //如果最后结果为空则证明全部匹配完毕
    return stack.isEmpty();
    }

    public static void main(String args[]){
    Scanner sc=new Scanner(System.in);
    System.out.println("请输入括号,判断是否匹配:");
    String num=sc.nextLine();
    LeetCode20 leedCode20=new LeetCode20();
    System.out.println("判断结果为:"+leedCode20.effectiveBracket(num));
    }
    }

    /**leetcode提交代码,无问题
    * class Solution {
    * //Hashmap(key,value)匹配键值,Character为字符类
    * private HashMap<Character,Character> map;
    * //构造类
    * public Solution(){
    * this.map=new HashMap<Character, Character>();
    * this.map.put(')','(');
    * this.map.put(']','[');
    * this.map.put('}','{');
    * }
    * public boolean isValid(String s) {
    * //初始化一个字符栈
    * Stack<Character> stack=new Stack<Character>();
    * for(int i=0;i<s.length();i++){
    * char c=s.charAt(i);
    * //如果当前字符是右括号(判断是不是key)
    * if(this.map.containsKey(c)){
    * //判断栈堆是否为空墨盒,如果为空则添加#,如果不为空则推出栈顶元素赋值给topElement,pop推出栈顶元素(为空时加#目的是防止第一个字符即为右括号,使之可以快速退出)
    * char topElement=stack.empty()?'#':stack.pop();
    * //如果这个括号的映射不匹配栈顶的映射,则返回false(判断栈顶元素和当前字符是否匹配)get(key)返回value
    * if(topElement!=this.map.get(c)){
    * return false;}
    * //如果是左括号则推入栈堆,push推入栈顶元素
    * }else {
    * stack.push(c);
    * }
    * }
    * //如果最后结果为空则证明全部匹配完毕
    * return stack.isEmpty();
    * }
    * }
    */
  • 相关阅读:
    JavaScript连载32-常用的鼠标事件
    Java连载138-数据库删除数据以及编译预处理
    C连载22-scanf转换说明中的修饰符
    Android连载32-实现登录密码存储功能
    JavaScript连载31-图片动态切换以及关闭图片案例
    搭建一个开源项目15-解决安装mysql不成功的问题
    Java连载137-更新数据和删除数据
    从零开始学VUE之组件化开发(注册父子结构组件)
    从零开始学VUE之组件化开发(注册局部组件)
    从零开始学VUE之组件化开发(注册全局组件)
  • 原文地址:https://www.cnblogs.com/shudaixiongbokeyuan/p/13368990.html
Copyright © 2020-2023  润新知