- Published on
ARTS 第13周
- Authors
- Name
- Jason Yang
- @yangjinlong86
Algorithm
package org.nocoder.leetcode.solution;
import java.util.HashMap;
import java.util.Stack;
/**
* Given a string containing just the characters '(', ')', '{', '}', '[' and ']',
* determine if the input string is valid.
* <p>
* An input string is valid if:
* <p>
* Open brackets must be closed by the same type of brackets.
* Open brackets must be closed in the correct order.
* Note that an empty string is also considered valid.
* <p>
* Example 1:
* <p>
* Input: "()"
* Output: true
* Example 2:
* <p>
* Input: "()[]{}"
* Output: true
* Example 3:
* <p>
* Input: "(]"
* Output: false
* Example 4:
* <p>
* Input: "([)]"
* Output: false
* Example 5:
* <p>
* Input: "{[]}"
* Output: true
*
* @author jason
* @date 2018/10/1.
*/
public class ValidParentheses {
public boolean isValid(String s) {
if (null == s && "".equals(s)) {
return true;
}
if ((s.length() % 2) != 0) {
return false;
}
HashMap<Character, Character> map = new HashMap<Character, Character>();
map.put('(', ')');
map.put('[', ']');
map.put('{', '}');
Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < s.length(); i++) {
char curr = s.charAt(i);
if (map.keySet().contains(curr)) {
stack.push(curr);
} else if (map.values().contains(curr)) {
if (!stack.empty() && map.get(stack.peek()) == curr) {
stack.pop();
} else {
return false;
}
}
}
return stack.empty();
}
}
Review
Dynamic Proxies in Java
https://www.baeldung.com/java-dynamic-proxies https://docs.oracle.com/javase/8/docs/technotes/guides/reflection/proxy.html
Tip
Valid Parentheses 解题思路
- 建立栈
- 遍历字符串,如果是左括号,将其入栈,如果是右括号,将其与栈顶的左括号比较,如果是一对则将栈顶元素出栈,如果不是就返回False
- 遍历完成后如果栈中还有元素,返回False
Share
花了点时间总结一下来公司这些日子做的东西,自我感觉良好,跟着春哥学了不少东西,这半年还是很充实的。 记得有一次春哥笑着跟我说,“你要相信,别人能做出来的东西,你也可以。”
架构设计
- 领域驱动设计
- 分布式系统架构设计
框架应用
- eureka
- springboot
- alibaba oss
- alibaba canal应用
- 伪装slave向mysql请求binlog,将分析结果发送到客户端,客户端获取到数据变更后,作相应数据的统计分析操作
- mysql
- binlog
- elasticsearch
- 全文检索,用于app搜索功能
- node.js
- vue
- 前端框架
- pm2
- 用于生产环境的nodejs server
CI/CD
- jenkins pipeline
- 从gitlab拉取项目源码
- mvn命令打包,使用maven-dockerfile插件实现自动构建和上传到远程私有仓库
容器应用
- docker
- 云图书馆所有java应用docker化
- jenkins pipeline实现半自动化
- docker-compose
中间件
- nginx
- kafka
设计模式应用
- 数据统计分析系统重构
- 观察者模式
- 责任链模式
- 命令模式
- ARTS
- 代理模式
- 静态代理
- 动态代理
- 策略模式
- 代理模式
操作系统
- ubuntu
- 了解到我的日常工作不用依赖于windows系统后,果断换了ubuntu,很爽
工具
- idea
- vscode
- 很好用的编辑器,出自微软
- navicat
- 数据库客户端
- xmind
- 思维导图
- pycharm
- python 编辑器
脚本语言
- python
- 写了一个清理docker image的小程序,从配置文件读取server信息,使用ssh登陆到server,执行shell命令
Java
- 多线程
- 异常处理