• LeetCode.1002-寻找共有字符(Find Common Characters)


    这是悦乐书的第375次更新,第402篇原创

    01 看题和准备

    今天介绍的是LeetCode算法题中Easy级别的第236题(顺位题号是1002)。给定仅由小写字母组成的字符串A,返回列表中所有字符串都有显示的字符的列表(包括重复字符)。例如,如果一个字符在所有字符串中出现3次但不是4次,则需要在最终答案中包含该字符三次。

    你可以按任何顺序返回答案。例如:

    输入:["bella","label","roller"]
    输出:["e","l","l"]

    输入:["cool","lock","cook"]
    输出:["c","o"]

    注意

    • 1 <= A.length <= 100

    • 1 <= A[i].length <= 100

    • A[i][j]是一个小写字母。

    02 解题

    题目的意思是找A中所有字符串共有的字符,即所有字符串的字符交集。比如示例中第一个字符串数组["bella","label","roller"]"bella""label"的字符交集是{'a','b','e','l','l'}"label""roller"的字符交集是{'e','l','l'},而{'a','b','e','l','l'}{'e','l','l'}的交集是{'e','l','l'},所以最后的结果是["e","l","l"]

    思路:使用一个26个长度的int数组count,初始值设为整型最大值,循环处理A中的字符串,借助26个长度的int数组tem,将每个字符串中的字符出现次数记数,然后比较counttem中对应位的元素值大小(字符出现次数),取较小(求交集)的一个重新赋值给count中的对应位,最后将count数组中大于0的数转成字符串添加到List中去。

    public List<String> commonChars(String[] A) {
        List<String> result = new ArrayList<String>();
        int[] count = new int[26];
        for (int i=0; i<26; i++) {
            count[i] = Integer.MAX_VALUE;
        }
        for (String str : A) {
            int[] tem = new int[26];
            for (int j=0; j<str.length(); j++) {
                tem[str.charAt(j)-'a']++;
            }
            for (int k=0; k<26; k++) {
                count[k] = Math.min(count[k], tem[k]);
            }
        }
        for (int i=0; i<26; i++) {
            while (count[i]-- > 0) {
                result.add((char)(i+'a')+"");
            }
        }
        return result;
    }
    

    03 小结

    算法专题目前已连续日更超过七个月,算法题文章242+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

    以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

  • 相关阅读:
    【转】React Native 关于箭头函数、普通函数与点击事件的调用
    【转】React Native Config.h not found ( glog-0.3.4 )
    微软必应Bing搜索引擎这几天无法访问!
    Beyond Compare 4 提示错误“这个授权密钥已被吊销”的解决办法
    flock
    Getting.Started.with.Unity.2018.3rd.Edition
    Joe Hocking
    Unity 2018 By Example 2nd Edition
    Unity 2017 Game Optimization 新版
    Why is it called “armature” instead of “skeleton”? or perhaps “rig”?
  • 原文地址:https://www.cnblogs.com/xiaochuan94/p/11142210.html
Copyright © 2020-2023  润新知