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/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » ARTS 第 6 周

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址