[Swift]LeetCode844. 比较含退格的字符串 | Backspace String Co
发布时间:2020-12-14 04:58:52 所属栏目:百科 来源:网络整理
导读:Given two?strings? S ?and? T ,?return if they are equal when both are typed into empty text editors.? # ?means a backspace character. Example 1: Input: S = "ab#c",T = "ad#c" Output: true Explanation: Both S and T become "ac". Example 2: In
Given two?strings? Example 1: Input: S = "ab#c",T = "ad#c" Output: true Explanation: Both S and T become "ac".
Example 2: Input: S = "ab##",T = "c#d#" Output: true Explanation: Both S and T become "".
Example 3: Input: S = "a##c",T = "#a#c" Output: true Explanation: Both S and T become "c".
Example 4: Input: S = "a#c",T = "b" Output: false Explanation: S becomes "c" while T becomes "b".
Note:
Follow up:
给定? 示例 1: 输入:S = "ab#c",T = "ad#c" 输出:true 解释:S 和 T 都会变成 “ac”。 示例 2: 输入:S = "ab##",T = "c#d#" 输出:true 解释:S 和 T 都会变成 “”。 示例 3: 输入:S = "a##c",T = "#a#c" 输出:true 解释:S 和 T 都会变成 “c”。 示例 4: 输入:S = "a#c",T = "b" 输出:false 解释:S 会变成 “c”,但 T 仍然是 “b”。 提示:
Runtime:?8 ms
Memory Usage:?19.5 MB
1 class Solution { 2 func backspaceCompare(_ S: String,_ T: String) -> Bool 3 { 4 var arrS = [Character]() 5 var arrT = [Character]() 6 for char in S 7 { 8 if char == "#" 9 { 10 if arrS.count > 0 11 { 12 arrS.removeLast() 13 } 14 } 15 else 16 { 17 arrS.append(char) 18 } 19 } 20 21 for char in T 22 { 23 if char == "#" 24 { 25 if arrT.count > 0 26 { 27 arrT.removeLast() 28 } 29 } 30 else 31 { 32 arrT.append(char) 33 } 34 } 35 return arrS == arrT 36 } 37 } 8ms 1 class Solution { 2 // S2: two pointers space could be 1 3 // S1: M+N 4 func backspaceCompare(_ S: String,_ T: String) -> Bool { 5 return process(S) == process(T) 6 } 7 8 private func process(_ S: String) -> String { 9 var stack = [Character]() 10 for c in Array(S) { 11 if c == "#" { 12 if stack.count > 0 { 13 stack.removeLast() 14 } 15 } else { 16 stack.append(c) 17 } 18 } 19 return String(stack) 20 } 21 } 12ms 1 class Solution { 2 func backspaceCompare(_ S: String,_ T: String) -> Bool { 3 var sStack: [Character] = [] 4 var tStack: [Character] = [] 5 6 var sArray = Array(S) 7 var tArray = Array(T) 8 9 for char in sArray { 10 if(char != "#") { 11 sStack.append(char) 12 } else { 13 if(!sStack.isEmpty) { 14 sStack.removeLast() 15 } 16 } 17 } 18 19 for char in tArray { 20 if(char != "#") { 21 tStack.append(char) 22 } else { 23 if(!tStack.isEmpty) { 24 tStack.removeLast() 25 } 26 } 27 } 28 29 print(String(sStack)) 30 print(String(tStack)) 31 32 if(String(sStack) == String(tStack)) { 33 return true 34 } else { 35 return false 36 } 37 } 38 } 16ms 1 class Solution { 2 func backspaceCompare(_ S: String,_ T: String) -> Bool { 3 var charsS = Array(S),charsT = Array(T) 4 5 var i = charsS.count - 1,j = charsT.count - 1 6 var countS = 0,countT = 0 7 while i >= 0 || j >= 0 { 8 while i >= 0 && (countS > 0 || charsS[i] == "#") { 9 if charsS[i] == "#" { 10 countS += 1 11 } else { 12 countS -= 1 13 } 14 15 i -= 1 16 } 17 18 while j >= 0 && (countT > 0 || charsT[j] == "#") { 19 if charsT[j] == "#" { 20 countT += 1 21 } else { 22 countT -= 1 23 } 24 25 j -= 1 26 } 27 28 if i >= 0 && j >= 0 && charsS[i] == charsT[j] { 29 i -= 1 30 j -= 1 31 } else { 32 break 33 } 34 } 35 return i < 0 && j < 0 36 } 37 } 24ms 1 class Solution { 2 func backspaceCompare(_ S: String,_ T: String) -> Bool { 3 return backspace(S) == backspace(T) 4 } 5 6 func backspace(_ string: String) -> String { 7 var s = [Character]() 8 9 string.forEach { c in 10 if c == "#" { 11 if !s.isEmpty { 12 s.removeLast() 13 } 14 } else { 15 s.append(c) 16 } 17 } 18 return String(s) 19 } 20 } 24ms 1 class Solution { 2 func backspaceCompare(_ S: String,_ T: String) -> Bool { 3 let sRe = reStack(str: S) 4 let tRe = reStack(str: T) 5 return sRe == tRe; 6 } 7 8 public func reStack(str: String) -> String { 9 var result = [Character]() 10 for i in str { 11 if (!result.isEmpty) { 12 if i != "#" { 13 result.append(i) 14 } else { 15 result.removeLast() 16 } 17 } else { 18 if i != "#" { 19 result.append(i) 20 } 21 } 22 } 23 return String.init(result); 24 } 25 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 字符串(2)---使用正则表达式
- react-native-page-listview使用方法
- Oracle 中 decode 函数用法
- Dreamweaver/Flash CS4安装后打开时提示此产品的
- Oracle安装遇到INS-30131错误的解决方法
- c# – 仅将方面应用于具有特定属性的方法
- 解析XML出现java.net.MalformedURLException: un
- vue router使用query和params传参的使用和区别
- 使用 Oracle Enterprise Manager Cloud Control
- [每日一题] OCP1z0-047 :2013-08-13 Flashback V
热点阅读