当前位置: 首页> 房产> 市场 > 焦作百姓网免费发布信息_承德网站建设作用_百度客服中心人工在线咨询_长沙seo推广公司

焦作百姓网免费发布信息_承德网站建设作用_百度客服中心人工在线咨询_长沙seo推广公司

时间:2025/9/7 12:21:36来源:https://blog.csdn.net/qq_49288154/article/details/143313745 浏览次数:0次
焦作百姓网免费发布信息_承德网站建设作用_百度客服中心人工在线咨询_长沙seo推广公司

有效的括号

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 1:

**输入:**s = “()”

**输出:**true

示例 2:

**输入:**s = “()[]{}”

**输出:**true

示例 3:

**输入:**s = “(]”

**输出:**false

示例 4:

**输入:**s = “([])”

**输出:**true

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

题解

​ 这是一道很经典的栈的问题,之前做过很多次,用过很多方法,笨拙的匹配也好,用 map 映射也好,总之我一直觉得是一道非常简单的问题;

​ 但是当我第一次看见工程师外教的代码,我才意识到,即使同为程序员,写的代码之间的差距也是非常大的,他写的代码非常的优雅简洁

class Solution {String OPENINGS = "({[";String CLOSINGS = ")}]";public boolean isValid(String s) {Stack<Character> stack = new Stack<Character>();for(int i = 0; i < s.length(); i++){if(isOPENINGS(s.charAt(i))){stack.push(s.charAt(i));}else if(isCLOSINGS(s.charAt(i))){if(stack.empty() || !match(stack.pop(), s.charAt(i))){return false;}}}return stack.empty();}boolean isOPENINGS(Character o){return OPENINGS.indexOf(o) > -1;}boolean isCLOSINGS(Character o){return CLOSINGS.indexOf(o) > -1;}boolean match(Character a, Character b){return OPENINGS.indexOf(a) == CLOSINGS.indexOf(b);}
}
var OPENINGS string = "({["
var CLOSINGS string = ")}]"func isValid(s string) bool {stack := []byte{}for i := 0; i < len(s); i++ {if isOPENING(s[i]) {stack = append(stack, s[i])} else if isCLOSINGS(s[i]) {if len(stack) == 0 || !match(stack[len(stack)-1], s[i]) {return false}stack = stack[:len(stack)-1]}}return len(stack) == 0
}func isOPENING(o byte) bool {return strings.IndexByte(OPENINGS, o) > -1
}func isCLOSINGS(o byte) bool {return strings.IndexByte(CLOSINGS, o) > -1
}func match(a, b byte) bool {return strings.IndexByte(OPENINGS, a) == strings.IndexByte(CLOSINGS, b)
}
关键字:焦作百姓网免费发布信息_承德网站建设作用_百度客服中心人工在线咨询_长沙seo推广公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: