算法:字符串中第一个只出现一次的字符

题目: 在字符串种找出第一个只出现一次的字符, 如”abaccgagg” 则输出”b”

参考代码如下 时间负责度 为 O(n)

class solution {
    // 利用hash表存, key 存每个字符 value 存每个字符对应的个数
    // 第一次 存 key 和value
    // 第二次遍历字符. 判断 map 内第一个count 为 1 的就是结果
    func findFirstCharOnlyOnce(from string: String) -> String{
        guard string.count > 0 else {
            return ""
        }
        var result = ""
        var map = [Character: Int]()
        for char in string {
            if let count = map[char], count > 0 {
                map[char] = count + 1
            }else {
                map[char] = 1
            }
        }
        for char in string {
           if let count = map[char], count == 1 {
                result = String(char)
                return result
            }
        }
        return result
    }
}

相关题目 都利用hash表来 实现相关的运算

  • 从第一个字符串种删除第二个字符串种出现过的字符 . 例如 第一个 为”i love swift” 第二个为 “object-C” 则输出 “i lv swif”
  • 删除一个字符串中重复出现的字符 例如 “google” 输出 “gole”
  • 判断两个字符串是不是变位数 , 变位树 为两个字符串种的字符 相同. 且 字符出现的个数相同 例如”silent” 和 “listen”
    原文作者:TimberTang
    原文地址: https://www.jianshu.com/p/2ef2baeabe86
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞