一、题目原型:
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
注意事项:您可以假定该字符串只包含小写字母。
二、示例剖析:
1 | s = "leetcode" |
三、解题思路:
用ASCII码来判断,因为一个字符对应唯一的一个ASCII码。由于题目可以假定只包含小写字母,我们范围就可缩小至小写字母这一块:97~122。
用一个count=27的数组,所有元素初始化都为0。如果ASCII码出现一次,该元素就+1;如果重复出现多次,该元素就会>1。所以我们只需要拿到最后的==1的元素就行。取它的i值。1
2let allLowerLetters: [Int8]? = "abcdefghijklmnopqrstuvwxyz".cString(using: String.Encoding.utf8)
// 小写字母ASCII码为:97~122
1 | func firstUniqChar(_ s: String) -> Int { |
四、小结
1.耗时188
毫秒,超过96.94%
的提交记录,总提交数104
。