ARTS是什么? Algorithm:每周至少做一个LeetCode的算法题 Review:阅读并点评至少一篇英文技术文章 Tip:学习至少一个技术技巧,总结和归纳日常工作中遇到的知识点 Share:分享一篇有观点和思考的技术文章
Algorithm
完成leetcode算法第20题。
提交四次才成功,主要是没有注意到一些边界问题。
- 只有左括号
- 只有右括号
需要考虑好边界问题,才能保证正确率
import java.util.Stack;
/**
* 给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。
*
* 有效字符串需满足:
*
* 左括号必须用相同类型的右括号闭合。
* 左括号必须以正确的顺序闭合。
*
* 示例 1:
* 输入:s = "()"
* 输出:true
*
* 示例2:
* 输入:s = "()[]{}"
* 输出:true
*
* 示例3:
* 输入:s = "(]"
* 输出:false
*
* 示例4:
* 输入:s = "([)]"
* 输出:false
*
* 示例5:
* 输入:s = "{[]}"
* 输出:true
*
* 提示:
* 1 <= s.length <= 104
* s 仅由括号 '()[]{}' 组成
*/
public class IsValid20 {
public static void main(String[] args) {
IsValid20 example = new IsValid20();
System.out.println(example.isValid("()"));
System.out.println(example.isValid("()[]{}"));
System.out.println(example.isValid("(]"));
System.out.println(example.isValid("([)]"));
System.out.println(example.isValid("{[]}"));
System.out.println(example.isValid("["));
System.out.println(example.isValid("(("));
System.out.println(example.isValid("]"));
}
public boolean isValid(String s) {
Stack<String> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
boolean push = c == '(' || c == '[' || c == '{';
if (push) {
stack.push(String.valueOf(c));
} else if (stack.isEmpty()) {
return false;
} else {
String pop = stack.pop();
if (("(".equals(pop) && c != ')') || ("{".equals(pop) && c != '}') || ("[".equals(pop) && c != ']')) {
return false;
}
}
}
return stack.isEmpty();
}
}
Review
We Should Write Java Code Differently
Why we should use this new coding style.
Tip
- 正常情况下,grant 命令之后,没有必要跟着执行 flush privileges 命令
- grant 命令对于全局权限,同时更新了磁盘和内存。命令完成后即时生效,接下来新创建的连接会使用新的权限
- 对于一个已经存在的连接,它的全局权限不受 grant 命令的影响
- 全局权限修改对当前线程无效,对新接入的线程有效。db权限修改对已进入db的线程无效,对其他线程有效
Share
写文章 - Spring JbdcTemplate常用方法实例简介Finish
预计完成时间:2021.11.08 ~ 2021.11.14
实际完成时间:2021.11.14