ARTS是什么? Algorithm:每周至少做一个LeetCode的算法题 Review:阅读并点评至少一篇英文技术文章 Tip:学习至少一个技术技巧,总结和归纳日常工作中遇到的知识点 Share:分享一篇有观点和思考的技术文章
Algorithm
完成leetcode算法第389题。
- 以字符的ascii为key,出现的次数为value将s存储数组array,然后再将array和t做比对,如果出现value为0则说明s中不存在该字符,直接返回;
对t的每个字符的ascii求和得到值sum,然后将sum减去s的每一个字符的ascii值,剩下的就是被添加的字母。
/**
* 定义一个数组,以s的字符ascii值为key, 出现的次数为value
* 用字符数组存储toCharArray()的值,执行速度快,内存消耗大
*/
public char findTheDifference_1(String s, String t) {
char[] origin = s.toCharArray();
int[] array = new int[26];
for (char value : origin) {
array[value - 'a']++;
}
char[] target = t.toCharArray();
for (char c : target) {
if (array[c - 'a'] == 0) {
return c;
}
array[c - 'a']--;
}
return ' ';
}
/**
* 定义一个数组,以s的字符ascii值为key, 出现的次数为value
* 和方案一思路一致,但是没有用字符数组存储char值,执行速度慢,内存消耗小
*/
public char findTheDifference_2(String s, String t) {
int[] array = new int[26];
for (int i = 0; i < s.length(); i++) {
array[s.charAt(i) - 'a']++;
}
for (int i = 0; i < t.length(); i++) {
char c = t.charAt(i);
if (array[c - 'a']-- == 0) {
return c;
}
}
return ' ';
}
/**
* 定义一个数组,以s的字符ascii值为key, 出现的次数为value
* 和方案一思路一致,但是没有用字符数组存储char值,执行速度慢,内存消耗小
*/
public char findTheDifference_3(String s, String t) {
int sum = 0;
for (int i = 0; i < t.length(); i++) {
sum += t.charAt(i);
}
for (int i = 0; i < s.length(); i++) {
sum -= s.charAt(i);
}
return (char) sum;
}
Review
Java中的Exception:
- 什么是异常和异常处理
- 异常类的包结构和异常的分类(exception和error)
- 如何使用Java自带的异常类和自定义的异常类处理问题
- try、catch、finally的用法
- throw和throws的区别
- 什么是异常传递
- 重新抛出异常
Java中的异常随处可见,如果处理不好这些异常会使得程序的健壮性大打折扣。本文通过介绍异常的基本概念与使用来让我们入门。我觉得在写代码的过程中一定要有一个思想,就是尽可能的让错误出现在编译期,也就是说异常尽可能是checked exception,这样能让代码在我们的掌控范围之内。还有两点常见的问题需要说明下:一是如果我们自己写的工具类需要让客户端重视可能的异常的话,我们应该将异常抛出而不是捕获。二是在我们使用流的时候一定要记得在finally的代码块中将流关闭。其他的问题就靠大家自己去归纳总结啦。
Tip
如何修改Ubuntu中root的默认密码?
Ubuntu中root的密码默认是随机的,每次开机密码都会变,那我们怎么将它改成固定的密码呢?
- 打开终端,输入sudo passwd
- 输入当前用户的密码
- 输入root的新密码
- 重新输入新密码
- 验证是否修改成功,su root然后输入新密码,如果切换到了root则说明修改成功
Share
输出文章 - spring-data-jpa中Specification的封装
Finish
预计完成时间:2021.08.30 ~ 2021.09.05
实际完成时间:2021.09.05