[Swift]LeetCode242. 有效的字母异位词 | Valid Anagram
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9748285.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
Given two strings s and t , write a function to determine if t is an anagram of s.
Example 1:
Input: s = "anagram", t = "nagaram" Output: true
Example 2:
Input: s = "rat", t = "car" Output: false
Note:
You may assume the string contains only lowercase alphabets.
Follow up:
What if the inputs contain unicode characters? How would you adapt your solution to such case?
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram" 输出: true
示例 2:
输入: s = "rat", t = "car" 输出: false
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
32ms
1 class Solution { 2 func isAnagram(_ s: String, _ t: String) -> Bool { 3 4 let chars_S = s.unicodeScalars 5 var counter_S = Array(repeating: 0, count: 26) 6 let chars_T = t.unicodeScalars 7 var counter_T = Array(repeating: 0, count: 26) 8 9 for char in chars_S { 10 let index = Int(char.value - 97) 11 counter_S[index] += 1 12 } 13 14 for char in chars_T { 15 let index = Int(char.value - 97) 16 counter_T[index] += 1 17 } 18 return counter_T == counter_S 19 } 20 }
32ms
1 class Solution { 2 func isAnagram(_ s: String, _ t: String) -> Bool { 3 guard s.count == t.count else { 4 return false 5 } 6 var occurances = [Int](repeating: 0, count: 26) 7 let aValue: UInt8 = 97 8 for char in s.utf8 { 9 occurances[Int(char - aValue)] += 1 10 } 11 for char in t.utf8 { 12 occurances[Int(char - aValue)] -= 1 13 } 14 for value in occurances { 15 if value != 0 { 16 return false 17 } 18 } 19 return true 20 } 21 }
48ms
1 class Solution { 2 func isAnagram(_ s: String, _ t: String) -> Bool { 3 return t.unicodeScalars.reduce(into: [:]) { $0[$1, default: 0] += 1 } == s.unicodeScalars.reduce(into: [:]) { $0[$1, default: 0] += 1 } 4 } 5 }
64ms
1 extension Character { 2 3 var ascii: Int { 4 return Int(unicodeScalars.first!.value) 5 } 6 7 } 8 9 class Solution { 10 func isAnagram(_ s: String, _ t: String) -> Bool { 11 var table = [Int](repeating: 0, count: 128) 12 13 for char in s { 14 table[char.ascii] += 1 15 } 16 17 for char in t { 18 table[char.ascii] -= 1 19 } 20 21 for ascii in 97...122 { 22 if table[ascii] != 0 { 23 return false 24 } 25 } 26 27 return true 28 } 29 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了