ARTS是左耳朵耗子专栏《左耳听风》用户自发每周完成一个ARTS:
1.Algorithm:每周至少做一个 leetcode 的算法题
2.Review:阅读并点评至少一篇英文技术文章
3.Tip:学习至少一个技术技巧
4.Share:分享一篇有观点和思考的技术文章
1.Algorithm:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入:123输出:321
示例 2:
输入:-123输出:-321
示例 3:
输入:120输出:21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
第一次解法:
public int reverse(int x) {
if(x == 0){
return 0;
}
if(x > 0){
String oldNum = new Integer(x).toString();
String newNum = new StringBuilder(oldNum).reverse().toString();
try{
int result = Integer.parseInt(newNum);
}catch(Exception e){
return 0;
}
return Integer.parseInt(newNum);
}
if(x < 0){
String oldNum = new Integer(-x).toString();
String newNum = new StringBuilder(oldNum).reverse().toString();
try{
int result = -Integer.parseInt(newNum);
}catch(Exception e){
return 0;
}
return -Integer.parseInt(newNum);
}
return 0;
}
感觉时间挺长,换一种解法
public int reverse(int x) {
if(x == 0){
return 0;
}
if(x > 0){
String reverseNum = "";
while(x/10 != 0){
reverseNum = reverseNum + x%10;
x = x/10;
}
reverseNum = reverseNum + x%10;
try{
int result = Integer.parseInt(reverseNum);
}catch(Exception e){
return 0;
}
return Integer.parseInt(reverseNum);
}
if(x < 0){
String reverseNum = "";
while(-x/10 != 0){
reverseNum = reverseNum + (-x%10);
x = x/10;
}
reverseNum = reverseNum +(-x%10);
try{
int result = -Integer.parseInt(reverseNum);
}catch(Exception e){
return 0;
}
return -Integer.parseInt(reverseNum);
}
return 0;
}
时间短了十几ms,直接判断比字符串来回操作要快。
2.Review:
最近想把之前写的一个项目的前端技术更新一下,也就是说看了个英文api文档(目前只看了一部分)
之前没学过前端框架,只是用了jquery,后来用了angularjs,最直接的用法-直接引用使用
但是后来发现一般都是前端工程化了。(因为不是专业的前端,加上前端技术够用就行,所以前端就比较落后吧)
打算用angular重写一遍。知道angular2及以后都是工程化的版本,而且也有很多ui组件可以用,所以对前端不太精通的很友好。之后可以写一些后续重写感受。
3.Tip:也是跟2有关,因为很多时候公司没有前端或者前端太少,需要后端写前端,各个前端框架都有各种好用的组件。方便快捷。
4.Share:
最近工作太忙,没时间沉淀一篇高质量的文章,那就推荐一篇吧。
https://mp.weixin.qq.com/s/ffmvRYM0TVIZF2bCzmoNxw
这篇文章是作者现阶段对java学习路线的一个推荐。