1002. 查找常用字符

作者: 1江春水 | 来源:发表于2019-07-25 19:48 被阅读5次

【题目描述】
给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。

你可以按任意顺序返回答案。

【示例1】

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

【示例2】

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

【提示】

1 <= A.length <= 100
1 <= A[i].length <= 100
A[i][j] 是小写字母

思路1:
1、题目不难理解,就是返回字符串数组中 都存在的字符,重复也没关系;
2、刚开始想到的是 使用map,遍历字符串数组,记录每个字符的次数,[字符:次数],如示例1:["bella","label","roller"]

b 1
e 1
l 2
a 1

3、然后比较字典相同字符所对应的value值,取小值
4、然后遍历字典数组,打印字典value值大于0 的 key,然后返回
5、由于Swift API不熟悉 最后没实现 手动哭

思路2:(别人的)
1、创建一个0-26空间的数组;
2、遍历第一个字符串,使每个字符 减去 a的assii值,得到的这个值正好是数组的下标
3、然后遍历剩余字符串,每遍历一个字符串得到一个0-26空间的数组,然后和第一个数组比较,取小值
4、遍历数组,打印数组下标对应的value 大于 0的字符即可

代码实现:

func commonChars(_ A: [String]) -> [String] {
    var result = [String]()
    var arr = Array.init(repeating: 0, count: 26)
    for cha in A[0] {//计算第一个串的c字符下标所对应的数量
        let v = cha.asciiValue! - Character.init("a").asciiValue!
        arr[Int(v)]+=1
    }
    
    for i in 1..<A.count {
        var tmp = Array.init(repeating: 0, count: 26)
        for c in A[i] {
            let vv = c.asciiValue! - Character.init("a").asciiValue!
            tmp[Int(vv)]+=1
        }
        for n in 0...25 {//对比  取最小
            arr[n] = min(arr[n], tmp[n])
        }

    }
    
    for i in 0..<arr.count {//打印 下标大于0 的字符,字符的个数为下标值
        if arr[i] > 0 {
            var index = arr[i]
            while index > 0 {
                let num = Int(Character.init("a").asciiValue!) + i
                let c = Character.init(UnicodeScalar(num)!)
                result.append(String.init(c))
                index-=1
            }
        }
    }
    return result
}

相关文章

  • 1002. 查找常用字符

    1002. 查找常用字符[https://leetcode-cn.com/problems/find-common...

  • 一道算法题,引出collections.Counter的特殊用法

    题目描述: 题目编号:1002. 查找常用字符 以上内容来源:力扣(LeetCode)链接:https://lee...

  • LeetCode 1002. 查找常用字符

    1002. 查找常用字符 给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复...

  • 1002. 查找常用字符

    【题目描述】给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列...

  • 1002. 查找常用字符(Python)

    更多精彩内容,请关注【力扣简单题】。 题目 难度:★★☆☆☆类型:字符串 给定仅有小写字母组成的字符串数组 A,返...

  • leetcode 1002. 查找常用字符

    leetcode[https://leetcode-cn.com/problems/find-common-cha...

  • 正则表达式1

    常用的元字符 常用的限定符 字符转义 如果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没办法指定...

  • c++的string库常用函数

    本片文章介绍 C++ string 的常用函数 1. 创建字符串 2. 查找 字符串查找很常见,下面介绍最常用的一...

  • 第九章 字符串的一些方法

    一些常用的字符串方法 1. indexof() 查找字符串 通过字符查找该字符的下标值 2. lastIndexO...

  • 2018-08-29

    day08-linux 1、vi字符串查找(常用):/要查找的字符串 敲enter开始查找 n代表下一个 ...

网友评论

    本文标题:1002. 查找常用字符

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