ARTS打卡:第十九周
每周完成一个ARTS:
- Algorithm:每周至少做一个 leetcode 的算法题
- Review:阅读并点评至少一篇英文技术文章
- Tip:学习至少一个技术技巧
- Share:分享一篇有观点和思考的技术文章
Algorithm
28. 实现 strStr() (简单)
实现 strStr() 函数。
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
示例 1:
1 | 输入: haystack = "hello", needle = "ll" |
示例 2:
1 | 输入: haystack = "aaaaa", needle = "bba" |
说明:
当 needle
是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
对于本题而言,当 needle
是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf()) 定义相符。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/implement-strstr
解题思路
这是一道字符串匹配的问题,如果有了解过字符串匹配算法的小伙伴们,这道题肯定不在话下。
著名的字符串匹配算法有:BF算法(Brute Force 暴力匹配算法,又称朴素匹配算法。)、RK算法(Rabin-Karp BF算法的升级版) BM算法、KMP算法、AC算法等,出了AC算法外,其余算法都可以直接套用,拿来解这道题。
解法一:直接使用 String.indexOf()🤣
1 | public class Soulation { |
执行结果:
执行用时 :1 ms, 在所有 Java 提交中击败了99.25%的用户
内存消耗 :36.4 MB, 在所有 Java 提交中击败了82.76%的用户
哈哈哈,这种利用 API 解题,有很大取巧成分,身为三好青年的我们,还是要学习下源码的,源码取自JDK8
,讲解转自
1 | /** |
解法二:利用 String.substring 和 Object.equals
1 | class Solution { |
执行结果:
执行用时 :1 ms, 在所有 Java 提交中击败了99.25%的用户
内存消耗 :36.2 MB, 在所有 Java 提交中击败了83.48%的用户
解法三: 采用 BF 算法来实现
1 | class Solution { |
执行结果:
执行用时 :4 ms, 在所有 Java 提交中击败了41.67%的用户
内存消耗 :36 MB, 在所有 Java 提交中击败了84.01%的用户
当然我们还可以采用RK
算法、BM
算法或KMP
算法去做,不过步骤就比较繁琐,我就不列出来了,小伙伴,可以自行了解一下。
以下链接,是我的学习BM算法和AC算法的笔记,感兴趣的小伙伴们,也可以查看一下👀
Review
本周阅读:The JVM Architecture Explained
作者在文中详细的介绍了JVM的体系结构以及JVM不同组件,感兴趣的小伙们可以自行查阅。
Tip
最近遇到一个问题,在这里记录一下解决方案。
背景:存在主从两台服务器,主机做 nfs的服务端,从机做客户端;由于服务器IP的更换,导致 nfs服务端了挂了,nfs客户端直接卡死,导致尝试访问挂载目录、df -h等操作都会使终端卡住,ctrl+c也不能强行退出,尝试过 kill - 9 也不起作用。
解决办法:先是采用 umount -f NFS挂载目录
命令(-f 强制卸载),然后报device is busy
的错误,然后尝试umount -l NFS挂载目录
命令(-l 当设备空闲时,进行umount),等了一会,发现 umount 成功了,还可以先用命令ps aux 来查看占用设备的程序PID,然后用命令kill来杀死占用设备的进程,最后进行 umount 。
原因:
nfs服务器/网络挂了,nfs客户端默认采用hard-mount选项,而不是soft-mount。他们的区别是
soft-mount: 当客户端加载NFS不成功时,重试retrans设定的次数.如果retrans次都不成功,则放弃此操作,返回错误信息 “Connect time out”
hard-mount: 当客户端加载NFS不成功时,一直重试,直到NFS服务器有响应。hard-mount 是系统的缺省值。在选定hard-mount 时,最好同时选 intr , 允许中断系统的调用请求,避免引起系统的挂起。当NFS服务器不能响应NFS客户端的 hard-mount请求时, NFS客户端会显示
“NFS server hostname not responding, still trying”
————————————————
原文链接:https://blog.csdn.net/BrotherDong90/article/details/51735632
参考的博客:
https://blog.csdn.net/BrotherDong90/article/details/51735632
https://my.oschina.net/LastRitter/blog/1542610
https://blog.csdn.net/xiyangyang8/article/details/49725039
Share
本周分享 simviso 团队翻译制作的:《编译原理入门之编译阶段概述》
让我们跟随知秋大大一起学习的吧😄~