在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Given a string We repeatedly make duplicate removals on S until we no longer can. Return the final string after all such duplicate removals have been made. It is guaranteed the answer is unique. Example 1: Input: Note:
给出由小写字母组成的字符串 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例: 输入:"abbaca" 输出:"ca" 解释: 例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。 提示:
Runtime: 132 ms
Memory Usage: 21.4 MB
1 class Solution { 2 func removeDuplicates(_ S: String) -> String { 3 var res:String = String() 4 for c in S 5 { 6 if res.isEmpty || res.last! != c 7 { 8 res.append(c) 9 } 10 else 11 { 12 res.popLast() 13 } 14 } 15 return res 16 } 17 } 132ms 1 class Solution { 2 func removeDuplicates(_ S: String) -> String { 3 var s = S 4 var i = s.startIndex 5 while !s.isEmpty && s.index(after: i) != s.endIndex { 6 if s[i] == s[s.index(after: i)] { 7 s.remove(at: i) 8 s.remove(at: i) 9 if i != s.startIndex { 10 i = s.index(before: i) 11 } 12 continue 13 } 14 i = s.index(after: i) 15 } 16 return s 17 } 18 } 144ms 1 class Solution { 2 func removeDuplicates(_ S: String) -> String 3 { 4 var list: [Character] = [] 5 for c in S 6 { 7 if let last = list.last 8 { 9 if last == c { 10 list.removeLast() 11 } 12 else { list.append(c) } 13 } 14 else { 15 list.append(c) 16 } 17 } 18 return String(list) 19 } 20 } 196ms 1 class Solution { 2 func removeDuplicates(_ S: String) -> String { 3 var stack = [Character]() 4 5 for char in S { 6 if stack.last == char { 7 stack.removeLast() 8 } else { 9 stack.append(char) 10 } 11 } 12 13 return String(stack) 14 } 15 }
|
请发表评论