本文共 1432 字,大约阅读时间需要 4 分钟。
自己写的代码
class Solution { public boolean isValid(String s) { //看到题目第一眼就是栈 后来在建栈的时候添加了泛型,下面省去了强转的一步。 Stack stack = new Stack(); //遍历字符串,当遇到左括号直接写入, //遇到右括号判断栈顶是否为对应左括号,是则去除栈顶进入下个循环不是则报错。 for(int i = 0; i
emm这次官方也不是很妙,通过的数据(时空击败率)跟我半斤八两。甚至我还小优一手。
class Solution { public boolean isValid(String s) { int n = s.length(); if (n % 2 == 1) { return false; } Mappairs = new HashMap () { { put(')', '('); put(']', '['); put('}', '{'); }}; Deque stack = new LinkedList (); for (int i = 0; i < n; i++) { char ch = s.charAt(i); //我觉得这里真的很妙,省去了大量的if语句 if (pairs.containsKey(ch)) { if (stack.isEmpty() || stack.peek() != pairs.get(ch)) { return false; } stack.pop(); } else { stack.push(ch); } } return stack.isEmpty(); }}
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/valid-parentheses/solution/you-xiao-de-gua-hao-by-leetcode-solution/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
虽然数据不是特别好看,但是也有值得学习的,通过了Map映射直接减少了大量的if语句,不像我写的,又臭又长,太难看了我的算法!!
第二个!------swrici