[Swift]LeetCode387. 字符串中的第一个唯一字符 | First Unique Character in a String
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9776962.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了