• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[Swift]LeetCode242.有效的字母异位词|ValidAnagram

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9748285.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

Given two strings s and , 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 }

 


 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift3.0Set发布时间:2022-07-13
下一篇:
《从零开始学Swift》学习笔记(Day 3)——Swift 2.0之后增加的关键字 ...发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap