第四周的 ARTS,继续加油。

Algorithm

Valid Parentheses

Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, determine if the input string is valid. An input string is valid if: 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. Example

Input: "()"
Output: true

Input: "()[]{}"
Output: true

Input: "([)]"
Output: false

解法1

拿到这道题,感觉是要用栈的思想,但具体怎么用没有想清楚。该题的关键是每当取到一个闭括号时,从栈顶弹出一个元素,判断是否与该闭括号配对,若可以配对,则弹出,继续下一个字符的判断,若不可以配对,则返回 false,到最后若栈中还有元素,则返回 false。

class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<Character>();
        HashMap<Character, Character> map = new HashMap<>();
        map.put('}', '{');
        map.put(']', '[');
        map.put(')', '(');
        Character topElement;
        
        for (int i = 0; i < s.length(); i++) {
            if (map.containsKey(s.charAt(i))) {
                if (stack.isEmpty()) {
                    topElement = '#';
                } else {
                    topElement = stack.pop();
                }
                if (topElement != map.get(s.charAt(i))) {
                    return false;
                }
            } else {
                stack.push(s.charAt(i));
            }
        }
        return stack.isEmpty();
    }
}

Review

Learning Git with help of real world scenarios

作者通过真实环境中的场景,介绍了 git 的几个不同特性。 第一个是使用 --amend 修改最近的一次提交。 第二个是使用 git reset HEAD 进行回退。 第三个特性是先使用 git diff > filename.patch 生成代码变化的文件,其他人可以使用 git apply filename.patch 将变化的代码应用到他的代码库中。 最后一个特性是对多个 commit 可以选择性合并到一个版本中。

Tip

MyBatis 多个接口参数的用法

当我们需要将多个参数传到接口方法中时,有哪些方式? 一种方式是将多个参数合并到一个 JavaBean 中,并使用这个 JavaBean 作为接口方法的参数。这种方法用起来很方便,但并不适合全部的情况,因为不能只为了两三个参数去创建新的 JavaBean 类,因此对于参数比较少的情况,可以使用 @Param 注解,例如:

List<SysRole> SelectRoles(@Param("UserId") Long userId, @Param("enabled") Integer enabled)

给参数配置 @Param 注解后,MyBatis 就会自动将参数封装成 Map 类型,@Param 注解值会作为 Map 中的 key,因此在 SQL 部分就可以通过配置的注解值来使用参数。

Share

个人在团队中的价值

除了编码,开发特性,个人还可以做出哪些对团队有价值的事情。 1、项目风险识别 识别各个特性的开发进度和难度,对于进度或质量有风险的特性,提前想办法规避风险。 2、版本质量提升 深入了解开发过程中的质量防护体系,发现防护薄弱环节,从测试用例,测试执行,用例覆盖范围去发现问题。 3、自动化能力提升 自动化脚本的有效性,如何维护自动化脚本,提高自动化率 4、发现团队存在的问题,给出改进建议 需求传递,客户沟通与反馈,做好任务分配,激励团队,使团队感受到紧迫感,成就感。 5、产品方向 产品定位,主要用户群体是? 思考演进方向,发现价值特性