leetcode基础算法(有效括号)

570 阅读1分钟

要解决的问题?

"()[]{()}" => ture
"([)]" => false

思路

  1. 建立字符匹配map;
  2. 循环数组通过map比较前后两者关系;
    1. 两者关系也许相等
    2. 两者关系也许是多层嵌套所以不相等,需要缓存起来后面再作比较

核心问题是解决多层嵌套

  1. 多层嵌套匹配从中心开始,之后不断匹配缓存顶部的数据直到匹配完缓存中的数据进入下一嵌套,最终结果也许是循环完毕后仍有缓存存在此时return false
  2. 上面说到不断匹配缓存顶部的数据此时应该联想到栈,将匹配不成功的字符压入栈(缓存),匹配成功后再弹出栈(清缓存)