ARTS第二周

ALGORITHM

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121输出: true

示例 2:

输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。

进阶:

你能不将整数转为字符串来解决这个问题吗?

    //性能一般
    def isPalindrome(self, x: int) -> bool:
        if x < 0:
            return False
        pa = []
        pac = x
        while pac > 0:
            pa.append(math.floor(math.fmod(pac, 10)))
            pac = math.floor(pac/10)
        
        i = 0
        while i <= math.floor((len(pa)-1)/2):
            if pa[i] != pa[len(pa)-i-1]:
                return False
            i = i + 1
        
        return True
    //反转数字作比较 
    //时间复杂度:O(\log_{10}(n))O(log10(n)), 对于每次迭代,我们会将输入除以10,因此时间复杂度为 O(\log_{10}(n))O(log10(n))。
空间复杂度:O(1)O(1)
     public bool IsPalindrome(int x) {
        // 特殊情况:
        // 如上所述,当 x < 0 时,x 不是回文数。
        // 同样地,如果数字的最后一位是 0,为了使该数字为回文,
        // 则其第一位数字也应该是 0
        // 只有 0 满足这一属性
        if(x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }

        int revertedNumber = 0;
        while(x > revertedNumber) {
            revertedNumber = revertedNumber * 10 + x % 10;
            x /= 10;
        }

        // 当数字长度为奇数时,我们可以通过 revertedNumber/10 去除处于中位的数字。
        // 例如,当输入为 12321 时,在 while 循环的末尾我们可以得到 x = 12,revertedNumber = 123,
        // 由于处于中位的数字不影响回文(它总是与自己相等),所以我们可以简单地将其去除。
        return x == revertedNumber || x == revertedNumber/10;
    }

REVIEWS

由于部分搜索结果不良,我们还在不断地查找搜索排序优化的方式,Semantic Search是其中的一个。区别于查找关键词,很多词连接在一起也可以认为是一个常用短语,比如“劳动仲裁” “代码逻辑” 等。查找和关联短语对于优化关键词命中也有比较大的帮助。

https://davidamerland.com/google-semantic-search.html


TIPS

很多时候网站安全我们都会关心 注入 xss csrf 等,而hash碰撞和hash长度攻击则一般不为人注意。下面两篇文章比较详细的记录了这些。

https://www.cnblogs.com/pcat/p/5478509.html

https://www.cnblogs.com/iyulang/p/6933052.html


SHARES

去年一整年都在对一个有10几年历史的项目进行底层搜索引擎的改造上,期间遇到的各种坑,需求缺乏,封装缺失,代码逻辑问题,碎片化,性能等等。

看到这篇文章,作者的吐槽如出一辙。

Code review能保证局部代码设计合理,高覆盖的测试能大概保证上线能跑,但长期下来那么多工程师那么多例外,软件整体就变成了一团分层不明,依赖混乱,无法拆分的东西。这是常见的软件工程问题

[在大型项目上,Python 是个烂语言吗? - 布丁的回答 - 知乎 https://www.zhihu.com/question/21017354/answer/652602653]