美文网首页
code - 字符的有效匹配

code - 字符的有效匹配

作者: BestFei | 来源:发表于2020-04-13 20:48 被阅读0次

Q:给定一个含有'(', ')', '{', '}', '[' 和']'字符串,判断这些符号是否语法匹配
A:
本题用栈来实现。
首先科普一下栈的几个方法:
1、实例化 Stack stack=new Stack();
2、判断是否为空 stack.empty()
3、取栈顶值(不出栈) stack.peek()
4、进栈 stack.push(Object);
5、出栈stack.pop();

解法:
1、首先定义一个map,将左右对应的符号,分别作为key和value存入。
2、依次去读取字符串中的每一个字符,如果是左边的字符,则加入栈。
3、如果读入的字符是右边的符号,则判断栈是否为空,且栈顶的字符是否是对应的左边字符,如果都满足,则将栈顶的字符取出;否则,就表示字符串不匹配。
4、依次全部读取字符串,如果此时栈是空的,则表示字符串全部都匹配;否则就表示不匹配。

package suanfa;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Stack;

public class StackExe {

    public static boolean isValid(String s) {
        if (s == null || s.length() % 2 == 1) {
            return false;
        }
        HashMap<Character, Character> map = new HashMap<Character, Character>();
        map.put('(', ')');
        map.put('[', ']');
        map.put('{', '}');
        Stack<Character> stack = new Stack<Character>();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (map.keySet().contains(c)) {
                stack.push(c);
            } else if (map.values().contains(c)) {
                if (!stack.empty() && map.get(stack.peek()) == c) {
                    stack.pop();
                } else {
                    return false;
                }
            }
        }
        return stack.empty();
    }

    public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("[]{}{}()");
        arrayList.add("{[()]}");
        arrayList.add("{[(])}");
        arrayList.add("{[([)]}");

        for (int i =0 ;i<arrayList.size();i++){
            System.out.println(arrayList.get(i)+" is "+ isValid(arrayList.get(i)));
        }
    }
}

相关文章

  • coding

    code - 获取质数code - 两数之和匹配目标值code - 最长有效字符串code - 字符的有效匹配co...

  • code - 字符的有效匹配

    Q:给定一个含有'(', ')', '{', '}', '[' 和']'字符串,判断这些符号是否语法匹配A:本题用...

  • KMP算法的JS实现

    talk is cheap,show me the code: 参考链接: 阮一峰-字符串匹配的KMP算法[KMP...

  • 数据结构(8)-栈相关题目

    括号匹配检查 给定一个只包括 (,),{,},[,]的字符串,判断字符串是否有效。注意空字符串可被认为是有效字符串...

  • 正则表达式

    单字符匹配 多字符匹配 边界匹配 分组匹配

  • 数据库数据存在空字符问题

    说明 有次给前端返回code值时,code后多了许多空字符,造成了编码不匹配的问题,之后发现是数据库字段设置的有问...

  • 正则表达式

    1.常用正则匹配符号 1.字符:匹配单个字符 a:表示匹配字符a; \:匹配转义字符

  • Regex的元字符总结

    匹配单个字符的元字符 | 元字符 | 匹配对象--- | --- | ---. | 点号 | 匹配单个任意字符[ ...

  • 第十六章 Phton3_正则模块(标准库)

    常用特殊字符匹配内容 字符匹配: 正则特殊字符匹配内容.匹配除换行符(\n)以外的单个任意字符\w匹配单个字母、数...

  • 正则

    单字符匹配 多字符匹配

网友评论

      本文标题:code - 字符的有效匹配

      本文链接:https://www.haomeiwen.com/subject/dvqomhtx.html