美文网首页
ARTS Week 05

ARTS Week 05

作者: dotdotdotdotbar | 来源:发表于2019-05-05 11:52 被阅读0次

Algorithm

题目

771. 宝石与石头

给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。
示例 1:
输入: J = "aA", S = "aAAbbbb"
输出: 3
示例 2:
输入: J = "z", S = "ZZ"
输出: 0
注意:
S 和 J 最多含有50个字母。
J 中的字符不重复。

思路

主要在于现根据J生成键值对,使用字符的ASCII码作为key,从而遍历S时能够直接根据字符的ASCII码查询J中是否存在该字符。

代码

class Solution {
    public int numJewelsInStones(String J, String S) {
        if (J == null || S == null) {
            return 0;
        }
        if (J.length() == 0 || S.length() == 0) {
            return 0;
        }

        char[] jewels = new char[58];//'z' = 'A' + 57,因此数组长度为58已足够
        int count = 0;

        for (int i = 0; i < J.length(); i++) {
            char c = J.charAt(i);
            jewels[c - 'A'] = 1;
        }
        for (int i = 0; i < S.length(); i++) {
            char c = S.charAt(i);
            if (jewels[c - 'A'] == 1) {
                count++;
            }
        }
        return count;
    }
}

Review

Small Functions considered Harmful
这篇文章解释了小函数拥有的各种弊病,作者介绍了一般认为短小的函数所具备的优点,并且一一给出了自己的理由进行反驳。比如通常认为函数应该单一职责,因此应该尽量小,但是却很难去确认怎么样才算是单一职责。对于DRY原则,作者认为如果坚持按照DRY原则去做而不多做思考的话会导致只见树木不见森林,从而导致代码抽象混乱,同时作者给出了抽象的一些建议。同时,小函数会造成函数命名过长、代码定位困难、类文件增多等等各种问题。最后,作者给出了一些小函数真正有意义的情形。
读完这篇文章,有一个体会就是说,不能照搬各种原则,就比如说函数尽量短小这样的原则,应该要多思考,如果把这些抽成一个函数,是不是真的有什么好处?如果这样做的话会不会有什么问题?经过仔细的思考之后再决定是否进行修改。

Tip

使用Hierarchy viewer分析布局:
打开Android Device Monitor,不能在android studio3.1之后的版本中直接打开了,因此需要去sdk目录下面打开:打开sdk根目录的tools/monitor.bat,等一会之后就会启动了。
按如下步骤打开:


image.png
image.png

然后就打开了,在手机上运行相关的app,连接电脑,可以看到下图


image.png
选中某个节点,点击下图右上方圈起的按钮可以分析其渲染速度;
image.png
结果如下:
image.png
其中三个点一次代表measure、layout、draw时间,红黄绿三种颜色表示相对同级元素消耗时间的多少,红色耗时最多、黄色次之,绿色最快。

Share

https://www.jianshu.com/p/0b32c8ab5b66

相关文章

  • ARTS Week 05

    Algorithm 题目 771. 宝石与石头 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。...

  • ARTS Week 1

    Algorithm: Problem: Reorder Log FilesAnswer: Review: (Not...

  • ARTS Week 01

    Algorithm 题目 977. 有序数组的平方给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的...

  • ARTS Week 02

    Algorithm 832. 翻转图像 题目 给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果...

  • ARTS Week 03

    Algorithm 905. 按奇偶排序数组 题目 给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的...

  • ARTS Week 06

    Algorithm 1021. 删除最外层的括号 有效括号字符串为空 ("")、"(" + A + ")" 或 A...

  • ARTS Week 04

    Algorithm 题目 922. 按奇偶排序数组 II 给定一个非负整数数组 A, A 中一半整数是奇数,一半整...

  • 哈利波特与魔法石:Week 03 Day 05_Chapter

    Week 03 Day 05 (Chapter 05 From the begining…Wanted one e...

  • ARTS-Week0

    每周完成一次 ARTS 编程挑战,坚持做有积累效应的事情。Algorithm:每周至少做一道 [LeetCode...

  • ARTS week4

    A:17.Letter Combinations of a Phone Number, 根据九宫格键盘的按键,输出...

网友评论

      本文标题:ARTS Week 05

      本文链接:https://www.haomeiwen.com/subject/vevfoqtx.html