ARTS Week 17

Posted mengxinayan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARTS Week 17相关的知识,希望对你有一定的参考价值。

Feb 17, 2020 ~ Feb 23, 2020

Algorithm

Problem 205.Isomorphic Strings(同构字符串) 题目链接

题目描述:给定两个字符串 s 和 t,判断是否可以通过字符替换从 s 得到 t。顺序不可以改变,同时不允许两个字符映射到同一个字符,但允许一个字符映射到它自身。举例如下:
Input: s = "egg", t = "add"
Output: true

Input: s = "foo", t = "bar"
Output: false

思路为:可以通过字典来建立映射关系。因为不允许两个字符映射到同一个字符,因此需要检查将要映射的字符是否已经出现在字典的 value 中。总结下来便是:若键值已出现在字典的 key 中,那么检查是否满足映射关系,若不满足,则为 False。满足继续遍历;若键值未出现在字典的 key 中,检查将要映射的字符是否已经出现在字典的 value 中,若出现,则为 False,若没有则更新现有的映射关系。直到遍历结束,则为 True

通过的代码如下

class Solution:
    def isIsomorphic(self, s: str, t: str) -> bool:
        char_map = {}
        res = True
        for i in range(len(s)):
            if (s[i] not in char_map) and (t[i] not in char_map.values()):
                char_map[s[i]] = t[i]
            elif (s[i] not in char_map) and (t[i] in char_map.values()):
                res = False
                break
            else:
                if char_map[s[i]] != t[i]:
                    res = False
                    break
        return res

Review

本周继续 Review 每个程序员需要知道的 97 件事(英文名:97 Things Every Programmer Should Know)。原文链接。下面是本周的5个小内容:

  • 学会如何说 “Hello World”(Learn to Say "Hello, World") 原文链接
    当我们在学习新的编程语言或者新的外语时,都需要学习最基本的内容,便是 "Hello World"。
  • 让您的项目自己说话(Let Your Project Speak for Itself) 原文链接
    需要给项目一个声音。以便于项目出现问题时,可以通过电子邮件或即时消息传递来完成,通知开发人员知道最新情况,同时,可以根据项目的紧急情况设置不同的等级,就好比交通信号灯有红灯和黄灯。
  • 链接器不是一个神奇的程序(The Linker Is not a Magical Program) 原文链接
    很多人在将源代码通过编译链接变成可执行文件的过程时,经常遇到某些警告,比如:链接器说一个变量被多次定义,链接器说一个变量未被定义。忽略这些警告是不明智的,虽然链接器有可能会解决这些问题,但并不是所有警告都能解决,更好的办法是自己去解决这些问题。
  • 临时解决方案的寿命(The Longevity of Interim Solutions) 原文链接
    通常为了快速解决一些眼前的问题,可能需要开发一个临时工具/方案来应急解决。但是,我们仍需要真正的方案去解决这个问题,如果不及时解决,那么临时解决方案会越来越多,进而导致项目的内部复杂性增加,可维护性下降。因此,当我们使用了临时解决方案后,应该尽快采用正式解决方案来取代它,而不是一直保留它。
  • 使接口易于正确使用(Make Interfaces Easy to Use Correctly and Hard to Use Incorrectly) 原文链接
    接口开发是软件开发中最常见的任务之一,无论是用户接口,还是功能接口,亦或是类接口、库接口等。好的接口是易于使用者使用和修改。总之,一个原则便是:存在接口是为了方便用户,而不是接口的实现者。

Tip

C/C++ 中 static 作为修饰词修饰函数的作用:避免冲突限定作用域,一个函数只可以在一个文件中出现。

Share

本周花了不少时间在折腾某些基础设施和无聊的事,因为不太熟悉,消耗了太多时间。原来真正打算做的事结果并没有做了多少。

以上是关于ARTS Week 17的主要内容,如果未能解决你的问题,请参考以下文章

ARTS-WEEK-007

ARTS-WEEK-002

ARTS-WEEK-002

ARTS Week 2

ARTS Week 20

ARTS Week 31