在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Your friend is typing his You examine the Example 1: Input: name = true
Explanation: 'a' and 'e' in 'alex' were long pressed.
Example 2: Input: name = false
Explanation: 'e' must have been pressed twice, but it wasn't in the typed output.
Example 3: Input: name = true
Example 4: Input: name = true
Explanation: It's not necessary to long press any character.
Note:
你的朋友正在使用键盘输入他的名字 你将会检查键盘输入的字符 示例 1: 输入:name = "alex", typed = "aaleex" 输出:true 解释:'alex' 中的 'a' 和 'e' 被长按。 示例 2: 输入:name = "saeed", typed = "ssaaedd" 输出:false 解释:'e' 一定需要被键入两次,但在 typed 的输出中不是这样。 示例 3: 输入:name = "leelee", typed = "lleeelee" 输出:true 示例 4: 输入:name = "laiden", typed = "laiden" 输出:true 解释:长按名字中的字符并不是必要的。 提示:
8ms 1 class Solution { 2 func isLongPressedName(_ name: String, _ typed: String) -> Bool { 3 guard name.count != 0 else { 4 return true 5 } 6 let chars1 = Array(name) 7 let chars2 = Array(typed) 8 var index = 0 9 for i in 0..<chars2.count { 10 if index == chars1.count { // Best Idea 11 if chars2[i] != chars2[i - 1] { 12 return false 13 } 14 continue 15 } 16 17 if chars1[index] == chars2[i] { 18 index += 1 19 } else if i != 0 && chars2[i] == chars2[i - 1] { 20 continue 21 } else { 22 return false 23 } 24 } 25 return index == chars1.count 26 } 27 } 12ms 1 class Solution { 2 func count(_ str: String) -> [(Character, Int)] { 3 var result = [(Character,Int)]() 4 5 var pos = str.startIndex 6 while pos < str.endIndex { 7 var next = str.index(after:pos) 8 var c = 1 9 while next < str.endIndex && str[pos] == str[next] { 10 next = str.index(after:next) 11 c += 1 12 } 13 result.append((str[pos], c)) 14 pos = next 15 } 16 17 18 return result 19 } 20 21 22 func isLongPressedName(_ name: String, _ typed: String) -> Bool { 23 let nameC = count(name) 24 let typedC = count(typed) 25 26 if nameC.count != typedC.count { 27 return false 28 } 29 30 for var i in 0..<nameC.count { 31 if nameC[i].0 != typedC[i].0 { 32 return false 33 } 34 if nameC[i].1 > typedC[i].1 { 35 return false 36 } 37 } 38 39 return true 40 } 41 } 16ms 1 class Solution { 2 func isLongPressedName(_ name: String, _ typed: String) -> Bool { 3 guard name.count != 0 else { 4 return true 5 } 6 let chars1 = Array(name) 7 let chars2 = Array(typed) 8 var index = 0 9 for i in 0..<chars2.count { 10 if index == chars1.count { // Best Idea 11 if chars2[i] != chars2[i - 1] { 12 return false 13 } 14 continue 15 } 16 17 if chars1[index] == chars2[i] { 18 index += 1 19 } else if i != 0 && chars2[i] == chars2[i - 1] { 20 continue 21 } else { 22 return false 23 } 24 } 25 return index == chars1.count 26 } 27 } 36ms 1 class Solution { 2 func isLongPressedName(_ name: String, _ typed: String) -> Bool { 3 guard name.count != 0 else { 4 return true 5 } 6 var index1 = 0 7 var index2 = 0 8 var char1 = Array(name) 9 var char2 = Array(typed) 10 while index1 < name.count && index2 < typed.count { 11 if char1[index1] == char2[index2] { 12 index1 += 1 13 index2 += 1 14 } else if index2 != 0 && char2[index2] == char2[index2 - 1] { 15 index2 += 1 16 } else { 17 return false 18 } 19 } 20 return index1 == char1.count 21 } 22 } 36ms 1 class Solution { 2 func isLongPressedName(_ name: String, _ typed: String) -> Bool { 3 var p:Int = 0 4 for num in 0..<typed.count 5 { 6 var typeIndex = typed.index(typed.startIndex,offsetBy: num) 7 var nameIndex = name.index(name.startIndex,offsetBy: p) 8 if p < name.count && typed[typeIndex] == name[nameIndex] 9 { 10 p += 1 11 } 12 else 13 { 14 if num > 0 && typed[typeIndex] == typed[typed.index(typed.startIndex,offsetBy:num - 1)] 15 { 16 continue 17 } 18 else 19 { 20 return false 21 } 22 } 23 } 24 return p == name.count 25 } 26 } 44ms 1 class Solution { 2 func isLongPressedName(_ name: String, _ typed: String) -> Bool { 3 guard name.count != 0 else { 4 return true 5 } 6 7 var index1 = 0 8 var index2 = 0 9 var char1 = Array(name) 10 var char2 = Array(typed) 11 while index1 < name.count && index2 < typed.count { 12 if char1[index1] == char2[index2] { 13 index1 += 1 14 index2 += 1 15 } else { 16 if index2 != 0 && char2[index2] == char2[index2 - 1] { 17 index2 += 1 18 } else { 19 return false 20 } 21 } 22 } 23 guard index1 == name.count else { 24 return false 25 } 26 27 while index2 < typed.count { 28 if index2 != 0 && char2[index2] == char2[index2 - 1] { 29 index2 += 1 30 continue 31 } else { 32 break 33 } 34 } 35 return index2 == typed.count 36 } 37 } 52ms 1 class Solution { 2 func isLongPressedName(_ name: String, _ typed: String) -> Bool { 3 guard name.count != 0 else { 4 return true 5 } 6 7 var index1 = 0 8 var index2 = 0 9 var char1 = Array(name) 10 var char2 = Array(typed) 11 while index1 < name.count && index2 < typed.count { 12 if char1[index1] == char2[index2] { 13 index1 += 1 14 index2 += 1 15 } else if index2 != 0 && char2[index2] == char2[index2 - 1] { 16 index2 += 1 17 } else { 18 return false 19 } 20 } 21 guard index1 == name.count else { 22 return false 23 } 24 25 while index2 < typed.count { 26 if index2 != 0 && char2[index2] == char2[index2 - 1] { 27 index2 += 1 28 continue 29 } else { 30 break 31 } 32 } 33 return index2 == typed.count 34 } 35 }
|
请发表评论