-第五周。这两周在复习大学里的课程,发现当时觉得课上很多看不懂的,现在看起来轻松多了,也带来了新的感悟。

1.Algorithm:每周至少做一个 leetcode 的算法题
2.Review:阅读并点评至少一篇英文技术文章
3.Tip:学习至少一个技术技巧
4.Share:分享一篇有观点和思考的技术文章

以下是各项的情况:

Algorithm

链接:[LeetCode-14]-Longest Common Prefix

题型都有大概的套路的

  • 非空判断
  • 数组里面只有一个元素的判断
  • 其它情况的判断

所以先判空,再想其他问题

思路:
1. 找出minString
2. 排除特殊情况:
  1)字符串数组为空,返回 null
  2)字符串数组长度为1,直接返回 strs[0]
  3)字符串数组中存在空字符串 返回 null
  4)数组中存在一个单词的首字母与其他单词的首字母不同,返回 null
3. 双层for循环找出 最长公共前缀
4. 注意,在内层for循环比较之前,可以再排除一种情况:如果strs[i] 与 minString 值相同,则不执行内层循环。以减少代码运行时间。

class Solution {
public String longestCommonPrefix(String[] strs) {
// 1. 判空 2.查找Str中最短长短,做判断边界 3.返回相同的公共头部
if (strs.length == 0) return "";
if (strs.length == 1) return strs[0];
// 最短长先暂设第一个
int min = strs[0].length() ;
// 判断最短长
for(String s : strs)
{
min = Math.min(min, s.length());
}
// 先暂定数组第一个是最短的
String minstr = strs[0];
// 先判断头是否相等,都不等排除 节省时间
// 再使用 for(int i=0;i <= strs.length ;i++ )
{
if(strs[0].charAt(0) != strs[i].charAt(0))
{ return "";
} /*if (strs[i].length() < min)
{
minstr = strs[i];
}*/
}
for (int i = 0; i < strs.length; i++)
{
if (minstr.equals(strs[i]))
{
continue;
}
for (int j = min-1; j > 0 ; j--)
{
if (minstr.charAt(j) != strs[i].charAt(j))
{
minstr = minstr.substring(0, j);
}
}
}
return minstr; }
} public class MainClass {
public static String[] stringToStringArray(String line) {
JsonArray jsonArray = JsonArray.readFrom(line);
String[] arr = new String[jsonArray.size()];
for (int i = 0; i < arr.length; i++) {
arr[i] = jsonArray.get(i).asString();
}
return arr;
} public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = in.readLine()) != null) {
String[] strs = stringToStringArray(line); String ret = new Solution().longestCommonPrefix(strs); String out = (ret); System.out.print(out);
}
}
}

  submit后提示出现 :

java.lang.StringIndexOutOfBoundsException: String index out of range: 0 at line 658, java.lang.String.charAt at line 73, Solution.longestCommonPrefix at line 163, MainClass.main

怎么出现了越界问题 ? 这可怎么搞 。。感觉除了写的繁琐了点,没看出问题。 在 tips 里是否能独立解决掉

Review

git 提交 信息要避免的问题

这篇不错,把不需要的点列出来,主旨就是开发人员 git commit信息不要写的过多过杂 ,省的其他人产生混乱 。觉得很有用

Tip

https://coderanch.com/t/658095/java/Correct-java-lang-StringIndexOutOfBoundsException-String

索引号小于长度的问题,那么我原先的代码有什么问题呢  ? 我暂时还得再想想  ,我先这样修改就能提交了

class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs.length == 0) {
return "";
}
if (strs.length == 1) {
return strs[0];
}
String min = strs[0] ;
for (int i = 0; i < strs.length; i++) {
if (strs[i].isEmpty()) {
return "";
}
if (strs[0].charAt(0) != strs[i].charAt(0)) {
return "";
}
if (strs[i].length() <= min.length()) {
min = strs[i];
}
}
for (int i = 0; i < strs.length; i++) {
if (min.equals(strs[i])) {
continue;
}
for (int j = min.length()-1; j > 0 ; j--) {
if (min.charAt(j) != strs[i].charAt(j)) {
min = min.substring(0, j);
}
}
}
return min;
}
}

Share

https://www.javaworld.com/article/3341388/jdk-13-the-new-features-coming-to-java-13.html

JDK13 的新功能 :

增强  ZGC(Z垃圾收集器)  以将未使用的内存返回到操作系统,引用的提议被集成到JDK 13中.ZGC被称为可扩展的低延迟收集器,目前不会将未使用的内存返回到操作系统即使长时间没有使用内存。对于某些应用程序和环境而言,此行为并非最佳,尤其是那些需要关注内存占用的应用程序和环境,例如应用程序可能长时间处于空闲状态并与其他应用程序共享或竞争资源的容器或环境    。。。  ,不过好像没有重大规则更改?

switch 更灵活了 , 将switch表达式看作一种多路条件运算符(?:)  应该是这个意思 ??

https://www.javaworld.com/article/2941281/java-101-deciding-and-iterating-with-java-statements.html?page=1

ARTS第五周的更多相关文章

  1. 20145213《Java程序设计》第五周学习总结补充

    20145213<Java程序设计>第五周学习总结补充 教材学习内容总结 欠的账都是要还的!第九章的内容躲过对酒当歌的夜,躲不过四下无人的街.由于第五周贪玩,疏忽冷落了Collection ...

  2. 20145213《Java程序设计》第五周学习总结

    20145213<Java程序设计>第五周学习总结 教材学习内容总结 "素衣莫起风尘叹,犹及清明可到家."每每念此,不得不心疼自己.古人清明长假都进城耍了,还担心自己清 ...

  3. 20145304 第五周Java学习报告

    20145304<Java程序设计>第5周学习总结 教材学习内容总结 1.使用try.catch: 如果使用了try.catch,编译时会尝试执行try区块中的程序代码,如果有错误,执行流 ...

  4. 20145330第五周《Java学习笔记》

    20145330第五周<Java学习笔记> 这一周又是紧张的一周. 语法与继承架构 Java中所有错误都会打包为对象可以尝试try.catch代表错误的对象后做一些处理. 使用try.ca ...

  5. 20145337 《Java程序设计》第五周学习总结

    20145337 <Java程序设计>第五周学习总结 教材学习内容总结 第八章 JAVA中的所有错误都会被包装成对象,如果你愿意,可以尝试执行并捕捉代表错误的对象后做一些处理.使用了try ...

  6. Linux内核设计第五周——扒开系统调用三层皮(下)

    Linux内核设计第五周 ——扒开系统调用三层皮(下) 一.知识点总结 1.给MenuOS增加新的命令的步骤 更新menu代码到最新版 test.c中main函数里,增加MenuConfig() 增加 ...

  7. 项目评价及第五周PSP的发布

         5TH 各组作品ALPHA发布体会       1:俄罗斯方块组做了主要功能,这个项目我自己原来拿c语言做过一部分,感觉此游戏细节特别多,逻辑思维需要组织,以为我的水准来说,感觉做的挺好的. ...

  8. 20145218 《Java程序设计》第五周学习总结

    20145218 <Java程序设计>第五周学习总结 教材学习内容总结 异常 程序中总有些意想不到的状况所引发的错误,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失 ...

  9. 《Java程序设计》第五周学习总结

    20145224 <Java程序设计>第五周学习总结 教材学习内容总结 第八章异常处理 8.1.1使用try.catch ·教材范例用户连续输入整数,输入0结束后显示输入数的平均值(代码如 ...

随机推荐

  1. MongoDB(12)- 查询嵌入文档的数组

    插入测试数据 db.inventory.insertMany( [ { item: "journal", instock: [ { warehouse: "A" ...

  2. BASE理论之思考

    一.什么是BASE理论? BASE理论是对CAP中一致性和可用性权衡的结果,它的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性. BASE理论 ...

  3. [leetcode] 75. 分类颜色(常数空间且只扫描一次算法)

    75. 分类颜色 我们直接按难度最高的要求做:你能想出一个仅使用常数空间的一趟扫描算法吗? 常数空间 只能扫描一趟.注意,是一趟,而不是O(n) 题中只会出现3个数字:0,1,2.换句话说,0肯定在最 ...

  4. Jmeter- 笔记11 - 持续集成

    CICD:持续集成 持续交付 进行持续集成的首选工具:Jenkins 性能测试中持续集成:Jenkins(管理集成) + Jmeter(性能工具) + ant(编译代码) ant安装配置步骤: 1.下 ...

  5. descriptor 'decode' requires a 'bytes' object but received a 'NoneType'

    记录在使用python过程中踩的坑------ 使用xlwt库对excel文件进行保存时报错 descriptor 'decode' requires a 'bytes' object but rec ...

  6. Eclipse修改方法内容不用重启Jetty服务器

    我Eclipse以前DEBUG模式时,修改方法里的内容是不用重启的, 现在修改方法里是一行代码都要重启服务器了,很麻烦,速度慢了,找了百度,那些方法对我不合适,可能遇到的问题不一样. 也许会合适遇到和 ...

  7. 异步编程CompletableFuture

    多线程优化性能,串行操作并行化 串行操作 // 以下2个都是耗时操作 doBizA(); doBizB(); 修改变为并行化 new Thread(() -> doBizA()).start() ...

  8. CVPR2020论文解析:实例分割算法

    CVPR2020论文解析:实例分割算法 BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation 论文链接:https://arxiv ...

  9. 使用ONNX将模型转移至Caffe2和移动端

    使用ONNX将模型转移至Caffe2和移动端 本文介绍如何使用 ONNX 将 PyTorch 中定义的模型转换为 ONNX 格式,然后将其加载到 Caffe2 中.一旦进入 Caffe2, 就可以运行 ...

  10. 【UG二次开发】获取系统信息UF_ask_system_info

    获取系统信息可以使用这个函数UF_ask_system_info 下面是例子: 1 extern DllExport void ufsta(char *param, int *returnCode, ...