ARTS-WEEK5

Posted by 周思进 on June 29, 2020

Algorithm

LeetCode-14. 最长公共前缀:

class Solutions:
    '''
    解题思路:水平扫描法
    第一个与第二个对比找到公共前缀,再与第三个对比得到公共前缀,再与第4个对比得到公共前缀,直到对比完所有数据
    '''
    def longestCommonPrefix(self, strs: List[str]) -> str:
        if not strs:
            return ""
        num = len(strs)
        prefix = strs[0]

        for i in range(1, num):
            prefix = self.lcp(prefix, strs[i])
            if not prefix:
                break

        return prefix

    def lcp(self, str1, str2):
        length, index = min(len(str1), len(str2)), 0
        while index < length and str1[index] == str2[index]:
            index += 1
        return str1[:index]

自己想到的也是水平方式,然自己实现过程中还各种不过的问题.. 使用的 for 循环语句,而不是像题解里最终的 while 语句,使用的不等于判断语句出现的问题到最后使用等于判断,还有此处的 lcp 封装接口,也是慢慢理解更好的代码处理方式。

看还有分治法、二分查找法,下周继续来学习吧。编程能力真的很需要多练习加强呐 = =


Review

https://medium.com/swlh/stop-using-if-else-statements-f4d2323e6e4

countless: 数不清的
specialized: 专门的
concise: 简洁的
elegant: 优雅
made up: 虚构的
in spirit:在精神上
delegate: 委托
unwieldy: 笨拙的
guard clauses:限制从句

最后根据文章思路去搜索学习了下状态机实现,做了下笔记:
C编程-状态机实现


Tip

MAC 打开wireshark 提示无权限

解决办法:

sudo chown user_name /dev/bpf*s


Share

这周刷隐秘的角落去了.. 没写其它文章,也没怎么看其它文章…
分享下之前发的一篇文章吧

网络工具-iptables端口镜像