转载

ARTS 第 6 周

每周一道算法、点评一篇英文技术文章、学习一个技术技巧、分享一个技术观点和思路

Algorithm

Problem: ZigZag Conversion

思路 1

定义一个二维数组,记录字符串的走势

class Solution {
    public String convert(String s, int numRows) {
        int length = s.length();
        if (length < numRows || numRows < 2) {
            return s;
        }
        int[][] ints = new int[numRows][length];
        int j = 0, incr = 1;
        for (int i = 0; i < length; i++) {
            ints[j][i] = 1;

            if (j == 0) {
                incr = 1;
            }

            if (j == numRows - 1) {
                incr = -1;
            }
            j += incr;
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < numRows; i++) {
            for (int k = 0; k < length; k++) {
                if (ints[i][k] == 1) {
                    sb.append(s.charAt(k));
                }
            }
        }

        return sb.toString();
    }
}

思路 2

一行一行的访问。

class Solution {
    public String convert(String s, int numRows) {
        if (numRows == 1) {
            return s;
        }
        StringBuilder sb = new StringBuilder();
        int length = s.length();
        int cycleLen = 2 * numRows - 2;// 头尾只有一个
        for (int i = 0; i < numRows; i++) {

            for (int currentCycle = 0; currentCycle + i < length; currentCycle += cycleLen) {
                sb.append(s.charAt(currentCycle + i));
                //不是头尾两行的情况,同一个周期里面,有两个值在同一行
                if (i != 0 && i != numRows - 1 && currentCycle + cycleLen - i < length)
                    sb.append(s.charAt(currentCycle + cycleLen - i));
            }
        }
        return sb.toString();
    }
}

Review

最近看了《编程珠玑》,果然经典的书就是经典,值得一看,且得多看几遍。

虽然只看了前面几章,但是给我了不少的启发。

编程时,需要明确问题、找到合适的数据结构和算法、使用简单的设计。

而这需要扎实的基础,尽量的压榨每一个字节,所以夯实基础是重点,这也是我一直的目标。

Tip

现在使用 Spring Boot 写一个 Filter 很简单,实现 javax.servlet.Filter 再加上 @WebFilter 注解,通过 urlPatterns 配置 Filter 的应用范围。还可以通过 @Order 指定顺序。最后加上 @ServletComponentScan 扫描这个 Filter

我在配置 urlPatterns 遇到一个坑,就是使用 /** 是无效的,只有 *

/order/* 表示以 /order/ 开始的 URL。

/*.do 表示以 .do 结尾的 URL。

注意: urlPatterns 中的字符串除了 * 都是全匹配(大小写,长度)。

Share

最近遇到了一些事情,发现自己的心态炸了,太容易被别人点燃了。得好好地控制心态,这又是一门得好好锻炼的事情。为人处世还是挺重要的,要做一个高情商的人。有时还得学习下阿Q精神。

暂时的办法是,不要被别人的情绪影响,在气头上的时候,冷静下来,也尽量用诙谐幽默的话让对方也冷静下来,脸皮厚一点。

二是控制自己的脾气,控制语气,不要把负面情绪传递给别人。

原文  https://yangdongdong.org/2018/08/05/arts-6/
正文到此结束
Loading...