ARTS是什么? Algorithm:每周至少做一个LeetCode的算法题 Review:阅读并点评至少一篇英文技术文章 Tip:学习至少一个技术技巧,总结和归纳日常工作中遇到的知识点 Share:分享一篇有观点和思考的技术文章

Algorithm

完成leetcode算法第20题。
提交四次才成功,主要是没有注意到一些边界问题。

  1. 只有左括号
  2. 只有右括号

需要考虑好边界问题,才能保证正确率

  1. import java.util.Stack;
  2. /**
  3. * 给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。
  4. *
  5. * 有效字符串需满足:
  6. *
  7. * 左括号必须用相同类型的右括号闭合。
  8. * 左括号必须以正确的顺序闭合。
  9. *
  10. * 示例 1:
  11. * 输入:s = "()"
  12. * 输出:true
  13. *
  14. * 示例2:
  15. * 输入:s = "()[]{}"
  16. * 输出:true
  17. *
  18. * 示例3:
  19. * 输入:s = "(]"
  20. * 输出:false
  21. *
  22. * 示例4:
  23. * 输入:s = "([)]"
  24. * 输出:false
  25. *
  26. * 示例5:
  27. * 输入:s = "{[]}"
  28. * 输出:true
  29. *
  30. * 提示:
  31. * 1 <= s.length <= 104
  32. * s 仅由括号 '()[]{}' 组成
  33. */
  34. public class IsValid20 {
  35. public static void main(String[] args) {
  36. IsValid20 example = new IsValid20();
  37. System.out.println(example.isValid("()"));
  38. System.out.println(example.isValid("()[]{}"));
  39. System.out.println(example.isValid("(]"));
  40. System.out.println(example.isValid("([)]"));
  41. System.out.println(example.isValid("{[]}"));
  42. System.out.println(example.isValid("["));
  43. System.out.println(example.isValid("(("));
  44. System.out.println(example.isValid("]"));
  45. }
  46. public boolean isValid(String s) {
  47. Stack<String> stack = new Stack<>();
  48. for (int i = 0; i < s.length(); i++) {
  49. char c = s.charAt(i);
  50. boolean push = c == '(' || c == '[' || c == '{';
  51. if (push) {
  52. stack.push(String.valueOf(c));
  53. } else if (stack.isEmpty()) {
  54. return false;
  55. } else {
  56. String pop = stack.pop();
  57. if (("(".equals(pop) && c != ')') || ("{".equals(pop) && c != '}') || ("[".equals(pop) && c != ']')) {
  58. return false;
  59. }
  60. }
  61. }
  62. return stack.isEmpty();
  63. }
  64. }

Review

We Should Write Java Code Differently
Why we should use this new coding style.

Tip

  1. 正常情况下,grant 命令之后,没有必要跟着执行 flush privileges 命令
  2. grant 命令对于全局权限,同时更新了磁盘和内存。命令完成后即时生效,接下来新创建的连接会使用新的权限
  3. 对于一个已经存在的连接,它的全局权限不受 grant 命令的影响
  4. 全局权限修改对当前线程无效,对新接入的线程有效。db权限修改对已进入db的线程无效,对其他线程有效

    Share

    写文章 - Spring JbdcTemplate常用方法实例简介

    Finish

    预计完成时间:2021.11.08 ~ 2021.11.14
    实际完成时间:2021.11.14