LeetCode-387. 字符串中的第一个唯一字符(Swift)

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/first-unique-character-in-a-string

题目

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

案例:

s = "leetcode"
返回 0.

s = "loveleetcode",
返回 2.

方法1-

func firstUniqChar(_ s: String) -> Int {
        
        var charDic = [Character: Int]()
        var charIndex = [Int]()
        
        //遍历字符串,如果没有,存放在字典中,将index插入到数组中。如果有,index从v数组移除
        var index = 0
        for character in s {
            
            if (charDic.keys.contains(character)) {
                charIndex = charIndex.filter{$0 != charDic[character]}
            }else {
                charDic[character] = index
                charIndex.append(index)
            }
            index += 1
        }
        return charIndex.first ?? -1
        
    }

遍历字符串,如果没有重复,存放在字典中,将index插入到数组中。
如果有重复,index从v数组移除
速度很慢。

方法2

func firstUniqChar(_ s: String) -> Int {
        
        var result = -1
        
        var charDic = [Character: Int]()
        
        //遍历字符串,如果没有,存放在字典中,character:0。如果有charcter:num+1
        for character in s {
            
            if (charDic.keys.contains(character)) {
                let count = charDic[character] ?? 1
                charDic[character] = count + 1
                
            }else {
                charDic[character] = 1
            }
        }
        var index = 0
        
        for character in s {
            
            if charDic[character] == 1 {
                result = index
                break
            }
            index += 1
        }
        return result
        
    }

遍历字符串,如果没有,存放在字典中,将index插入到数组中。
如果有,index从v数组移除
遍历字符串,字典值为1的话,返回此index

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容