LeetCode-387. 字符串中的第一个唯一字符(Swift
2019-07-17 本文已影响0人
entre_los_dos
来源:力扣(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