[Swift]LeetCode290. 单词模式 | Word Pattern
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9756948.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
Given a pattern
and a string str
, find if str
follows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in pattern
and a non-empty word in str
.
Example 1:
"abba"
"dog cat cat dog"
Example 2:
"abba"
"dog cat cat fish"
Example 3:
"aaaa"
"dog cat cat dog"
Example 4:
"abba"
"dog dog dog dog"
Notes:
You may assume pattern
contains only lowercase letters, and str
contains lowercase letters separated by a single space.
给定一种 pattern(模式)
和一个字符串 str
,判断 str
是否遵循相同的模式。
这里的遵循指完全匹配,例如, pattern
里的每个字母和字符串 str
中的每个非空单词之间存在着双向连接的对应模式。
示例1:
"abba"
"dog cat cat dog"
示例 2:
"abba"
"dog cat cat fish"
示例 3:
"aaaa"
"dog cat cat dog"
示例 4:
"abba"
"dog dog dog dog"
说明:
你可以假设 pattern
只包含小写字母, str
包含了由单个空格分隔的小写字母。
12ms
1 class Solution { 2 func wordPattern(_ pattern: String, _ str: String) -> Bool { 3 var strArr = str.components(separatedBy: " "); 4 if pattern.count != strArr.count { 5 return false 6 } 7 var keyValueDic = Dictionary<Character, String>() 8 var keyValueDic2 = Dictionary<String, Character>() 9 for (index,key) in pattern.enumerated() { 10 let tempStr = keyValueDic[key] 11 if tempStr == nil { 12 if keyValueDic2[strArr[index]] != nil { 13 return false; 14 } 15 keyValueDic[key] = strArr[index] 16 keyValueDic2[strArr[index]] = key 17 } 18 else { 19 if tempStr == strArr[index] && keyValueDic2[tempStr!] == key { 20 continue 21 } 22 else { 23 return false 24 } 25 } 26 } 27 return true 28 } 29 }
12ms
1 class Solution { 2 func wordPattern(_ pattern: String, _ str: String) -> Bool { 3 4 let patternArr = Array(pattern) 5 let strArr = str.split(separator: " ").map{String($0)} 6 7 var patternDict = [Character:Int]() 8 var strDict = [String:Int]() 9 10 var tempP = 0 11 var tempS = 0 12 13 for i in patternArr { 14 if patternDict[i] == nil { 15 patternDict[i] = tempP 16 tempP += 1 17 } 18 } 19 20 for i in strArr { 21 if strDict[i] == nil { 22 strDict[i] = tempS 23 tempS += 1 24 } 25 } 26 27 var resultPattern = [Int]() 28 var resultStr = [Int]() 29 30 for i in patternArr { 31 resultPattern.append(patternDict[i]!) 32 } 33 34 for i in strArr { 35 resultStr.append(strDict[i]!) 36 } 37 38 print(resultPattern) 39 print(resultStr) 40 print(resultPattern == resultStr) 41 return resultPattern == resultStr 42 } 43 }
16ms
1 class Solution { 2 func wordPattern(_ pattern: String, _ str: String) -> Bool { 3 let wordArr = str.components(separatedBy: " ") 4 if pattern.count != wordArr.count { 5 return false 6 } 7 8 var patternMap: [String: String] = [String: String]() 9 10 for (n,x) in pattern.enumerated() { 11 let strX = String(x) 12 if patternMap[strX] == nil {//没有strx这个key 13 let word = wordArr[n] 14 let flag = patternMap.values.contains(word) 15 if !flag { 16 patternMap[strX] = word 17 }else { 18 return false 19 } 20 }else { 21 if patternMap[strX] != wordArr[n] { 22 return false 23 } 24 } 25 } 26 return true 27 } 28 }
20ms
1 class Solution { 2 func wordPattern(_ pattern: String, _ str: String) -> Bool { 3 let strArr = str.split(separator: " ") 4 var dic = [Character: String]() 5 if strArr.count != pattern.characters.count || Set(strArr).count != Set(pattern.characters).count{ 6 return false 7 } 8 9 for (i, v) in pattern.characters.enumerated(){ 10 if dic[v] == nil{ 11 dic[v] = String(strArr[i]) 12 }else{ 13 if dic[v] != String(strArr[i]){ 14 return false 15 } 16 } 17 } 18 return true 19 } 20 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了