所谓ARTS:每周至少做一个LeetCode的算法题;阅读并点评至少一篇英文技术文章;学习至少一个技术技巧;分享一篇有观点和思考的技术文章。(也就是Algorithm、Review、Tip、Share 简称ARTS)这是第五期打卡。
最长公共前缀 (https://leetcode.com/problems/longest-common-prefix/)
题目描述:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1:
输入:["flower","flow","flight"]
输出: "fl"
示例 2:
输入:["dog","racecar","car"]
输出: ""
解释:输入不存在公共前缀
说明:所有输入只包含小写字母 a-z。
这题有一个很大的坑,就是边界问题,小编给的答案好几次不通过,就是因为遇到了各个边界问题没有处理好,导致一直出错,甚至还出现了一次数组越界,尴尬。在小编代码习惯里,其实理论上已经做了处理的,可能在跑算法的时候确实不行吧。
而且,这次虽然是标记为简单的题目,但是解法却有很多,小编看这题讨论的也是很激烈。如你所想,小编还是没有很给力,写了个双重循环,循环来判断是否符合要求,而且还提交了好几次。
在题解里,分别有几种方法,水平扫描法,水平扫描,分治,二分查找法,这题小编感觉很是经典,解答的示例和解释小编看了好几遍,学习了好几遍。(https://leetcode-cn.com/problems/longest-common-prefix/solution/)这是中文版地址的解答描述,大家可以去看下,小编在这里就不一一赘述啦。
public static String longestCommonPrefix(String[] strs) {
if (strs.length < 0) {
return "";
}
if (strs.length == 1) {
return strs[0];
}
StringBuilder stringBuilder = new StringBuilder();
if (strs.length > 1) {
int length = strs[0].length();
for (int i = 0; i < length; i++) {
String[] aStringArr = strs[0].split("");
String info = aStringArr[i];
for (int j = 1; j < strs.length; j++) {
if (strs[j].length() <= i || !String.valueOf(strs[j].charAt(i)).equals(info)) {
return stringBuilder.toString();
}
if (String.valueOf(strs[j].charAt(i)).equals(info) && j == (strs.length - 1)) {
stringBuilder.append(info);
}
}
}
}
return stringBuilder.toString();
}
Android Q Beta 2 is now available, including new ‘bubbles’ for multi-tasking (https://thenextweb.com/google/2019/04/03/android-q-beta-2-is-now-available-including-a-new-way-to-multi-task/)
前段时间,Android更新了最新版本Android Q的Beta1,现在又更新了Beta2,作为曾经狂热的Android开发者,现在是Java开发,还是迫不及待地想了解一番最新版本的Android到底有什么美妙的地方。
文中着重介绍了Android Q Bete1版本有个隐藏的功能,将通知放在浮动的“气泡”中,类似于Facebook的Chat Heads消息。这个有一个好处就是,可以让你在不下拉通知栏的情况下阅读通知,并可以在手上使用手机的时候轻松完成更多的任务。但是,他之所以隐藏,是因为感觉还不成熟。
但是,后面又进行了这个想法的猜想,比如之前说的Facebook有类似的功能,那我们就可以想到,其实我们的短信,微信也是可以这样的。在消息来的第一时间用一个气泡提示框弹出,并且快速回复。小编在想,如果那时候我正在玩王者荣耀,正在吃鸡咋办,不过攻城狮们肯定已经想到何事开启啦。或者王者荣耀等游戏、或者手机开发厂商定制ROM的时候,肯定已经制定好对策,比如来一个游戏勿扰模式等等。这个勿扰模式貌似现在是不是已经有的了,那就是勿扰增强模式吧。
不过都是猜想,要是现在有一台谷歌亲儿子,那是可以考虑升级一下的。噢?什么是谷歌亲儿子?那就是对我们略遥远的Pixel phone啦,目前只有他可以下载更新Android Q Beta1和Beta2版本。小编朋友有个Google忠实粉,好像入手过的,回头看看,让他尝尝鲜,顺带看看刚才说的打游戏情景下如何处理吧。
虽然离开Android开发一年多了,但是Android生态真的是感觉越来越好,小编在考虑业余时间也还是需要重拾Android的,毕竟方便调试,方便自主开发,方便实现自己想要的功能的App。还记得当初自学的时候,那种自己编写,自己成功的感觉很爽。你觉得呢?
上次聊到的是我学习《Java核心技术36讲》中第26讲的内容,这次我把第27讲做的笔记和大家分享下,主要是描述Java垃圾收集器相关的内容。学完Java这门课程,还输出了一篇读后感,在share部分一同分享给大家,和大家一起在Java的世界里遨游。
垃圾收集器(GC,Garbage Collector) 典型回答:
-XX:MaxGCPauseMillis=value
-XX:GCTimeRatio=N // GC 时间和用户时间比例 = 1/(N+1)
继续设计模式的学习执行,更新到观察者模式。在上面说道,我学习Java输出了一篇学后感,和大家一起共勉。