在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1. Examples: s = "leetcode" return 0. s = "loveleetcode", return 2.
Note: You may assume the string contain only lowercase letters. 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2.
注意事项:您可以假定该字符串只包含小写字母。 1 class Solution { 2 func firstUniqChar(_ s: String) -> Int { 3 //把英文字符都存入数组中 4 var arr = Array<Int>(repeating: 0, count: 26) 5 for asc in s.unicodeScalars 6 { 7 let num:Int = Int(asc.value - 97) 8 //记录字符出现的次数 9 arr[num] += 1 10 } 11 //再次循环字符串,使用enumerated()获取到字符串的索引 12 for (index, asc) in s.unicodeScalars.enumerated() 13 { 14 let count = arr[Int(asc.value - 97)] 15 if count == 1 { 16 return index 17 } 18 } 19 return -1 20 } 21 } 104ms 1 class Solution { 2 func firstUniqChar(_ s: String) -> Int { 3 var list:[Int] = [Int](repeating: 0, count: 26) 4 for charCode in s.unicodeScalars { 5 let tempIndex:Int = Int(charCode.value) - 97 6 list[tempIndex] += 1 7 } 8 9 var index = 0 10 for charCode in s.unicodeScalars { 11 let tempIndex:Int = Int(charCode.value) - 97 12 if list[tempIndex] == 1 { 13 return index 14 } 15 index += 1 16 } 17 return -1 18 } 19 } 128ms 1 class Solution { 2 func firstUniqChar(_ s: String) -> Int { 3 var countFor = Array(repeating:0, count:26) 4 let offset = 97 5 for charCode in s.utf8 { 6 let adjustedCharCode = Int(charCode) - offset 7 countFor[adjustedCharCode] += 1 8 } 9 for (i, charCode) in s.utf8.enumerated() { 10 let adjustedCharCode = Int(charCode) - offset 11 if countFor[adjustedCharCode] == 1 { 12 return i 13 } 14 } 15 return -1 16 } 17 }
|
请发表评论