美文网首页Swift LeetCode
算法:字符串中第一个只出现一次的字符

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

作者: TimberTang | 来源:发表于2018-04-10 09:51 被阅读127次

    题目: 在字符串种找出第一个只出现一次的字符, 如"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"

    相关文章

      网友评论

        本文标题:算法:字符串中第一个只出现一次的字符

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