每周 ARTS 第 26 期

1. Algorithm

判定字符是否唯一(简单)

描述:

实现一个算法,确定一个字符串 s 的所有字符是否全都不同。

示例:
输入: s = "leetcode"
输出: false 
输入: s = "abc"
输出: true
思路:
  • 统计次数:使用一个额外的 int 数组,统计每个字符出现的次数。
  • 位运算:int 类型有 32 位,取其中的低 26 位,作为每个字符的标志位,通过左移、与、或运算,记录每个字符的对应位置。真是高级解法!
class Sulution {
    public boolean isUnique1(String astr) {
        if (astr == null || astr.length() == 0) {
            return true;
        }
        int[] counts = new int[26];
        for (int i = 0, length = astr.length(); i < length; i++) {
            int pos = astr.charAt(i) - 'a';
            if (counts[pos] >= 1) {
                return false;
            }
            counts[pos] += 1;
        }
        return true;
    }

    public boolean isUnique2(String astr) {
        if (astr == null || astr.length() == 0) {
            return true;
        }
        int mark = 0;
        for (int i = 0, length = astr.length(); i < length; i++) {
            int flag = 1 << (astr.charAt(i) - 'a');
            if ((mark & flag) != 0) {
                return false;
            } else {
                mark |= flag;
            }
        }
        return true;
    }
}
分析:

统计次数:

  • 时间复杂度:O(N)
  • 空间复杂度:O(N)

位运算:

  • 时间复杂度:O(N)
  • 空间复杂度:O(1)

2. Review

How to Go from Junior to Senior Programmer 如何从初级程序员变成高级程序员?

从 InfoQ 看到的一篇译文,算是经验之谈。高工不是根据经验判定,而是分析的技能。深有同感,我总是把代码放在第一位,有时候忽略了业务场景,考虑问题的出发点不同,导致任务处理方式也不同。代码只是一部分,真正的目的是解决问题。

一名程序员不会因为他会写代码而成为一名合格的程序员,而是因为在开始做任何事情之前先做分析,然后再来开展工作,这才是真正的程序员。

3. Tip

最近某 BAT 之一坑害了 pandownload,真的是令人发指!自己的产品做得烂不去反思,却耍小伎俩坑无辜的开发者。天下苦 B 久矣,作为程序员,从抵制 B 开始。推荐一个好用的木弟子 AgentNeo,线路非常稳定,价格也实惠。通过我的链接注册,可以享受 5 元优惠 https://neoproxy.me/?rc=r1gv64bl
。(结算时选择团购下单,团购代码 21853G0V,享受 8 折优惠,活动截止 2020-04-25)

4. Share

在 GitHub 上搜了一些 Android 面试资料 http://note.youdao.com/noteshare?id=a04ac812925b23f6dc112eda70079c53,愿步步高升。

题外话:

由于个人原因,ARTS 暂停了将近半年,后续恢复打卡,请见谅。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,427评论 0 2
  • --- layout: post title: "如果有人问你关系型数据库的原理,叫他看这篇文章(转)" date...
    蓝坠星阅读 834评论 0 3
  • 1. file n. 文件;v. 保存文件2. command n. 命令指令3. use v. 使用用途4. p...
    喵呜Yuri阅读 774评论 0 4
  • 还记得第一次邂逅《简爱》是在中学的语文课本里,不过一直拖到大学语文的课上才翻开它的扉页,闻着淡淡的油墨香味,相见...
    也是个文艺青年阅读 1,328评论 2 2
  • 今天我参加了鹏涛舞蹈学校的演出,老师们给我们化妆,然后就开始演出啦,在舞台上我感觉很轻松,我们跳的是劳动最...
    刘博瑜阅读 241评论 0 0