你背不下来的书,总有人能背下来;你做不出来的题,总有人能做出来;你愿意拖到明天的事,总有人今天努力做完;那么不好意思,你想去的学校也只能别人去了,你想过的人生也只能别人过了。
路虽然很漫长,很孤单,但是只要你走出一步,你离目的地就近一步,千万不能停在原地叹息,否则永远都无法到达目的地。
Algorithm
没有哪个大牛对数据结构和算法是不熟练的。LeetCode 算法题,至少一题
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 "LEETCODEISHIRING"
行数为 3 时,排列如下:
L C I R
E T O E S I I G
E D H N
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"
。
链接:https://leetcode-cn.com/problems/zigzag-conversion/
思路:这里就是将一个字符串打印出 N 的形状,可以找出其中的规律来,这里它的行号始终都是1-N,N-1这样反复的过程
public class ZigzagConversion {
public static void main(String[] args) {
String s = "1234567";
int row = 4;
System.out.println(new ZigzagConversion().convert(s, row));
}
/**
* 找关系,行数的变化,分别是1234,4321,1234,...这样有规律的
* @param s
* @param numRows
* @return
*/
public String convert(String s, int numRows) {
if(numRows < 2) {
return s;
}
List<StringBuilder> rows = new ArrayList<StringBuilder>();
for(int i = 0; i < numRows; i++) {
rows.add(new StringBuilder());
}
int flag = -1,i = 0,idx = 0;
while (i < s.length()) {
rows.get(idx).append(s.charAt(i));
// 这两种情况要变化,也就是1-4,4-1,1-4,...,反复这样的过程
if (idx == 0 || idx == numRows -1) {
flag = - flag;
}
idx += flag;
i ++;
}
StringBuilder sb = new StringBuilder();
for (StringBuilder row : rows) {
sb.append(row);
}
return sb.toString();
}
}
Review
流畅的阅读英文技术资料是一个大牛必备的。英文学习,以技术翻译为主
Tip
保持好奇,保持学习。至少一个技巧,以技术技巧为主
这周看了 Ant Design 教程,有理有据,优秀的前端设计规范,值得借鉴学习。
Share
要是为了建立你的影响力,能够输出价值观。分享一篇有观点和思考的文章,也可以是技术总结的文章。
入职新公司的一周感悟
当然,外包的工作可能都是很简单的,有可能没有什么挑战难度的,所以一定要有这个心理准备,有更好的选择肯定是不建议外包。