在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Given a string Reverse the strings in each pair of matching parentheses, starting from the innermost one. Your result should not contain any bracket. Example 1: Input: s = "(abcd)" Output: "dcba" Example 2: Input: s = "(u(love)i)" Output: "iloveu" Example 3: Input: s = "(ed(et(oc))el)" Output: "leetcode" Example 4: Input: s = "a(bcdefghijkl(mno)p)q" Output: "apmnolkjihgfedcbq"
Constraints:
给出一个字符串 请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。 注意,您的结果中 不应 包含任何括号。 示例 1: 输入:s = "(abcd)" 输出:"dcba" 示例 2: 输入:s = "(u(love)i)" 输出:"iloveu" 示例 3: 输入:s = "(ed(et(oc))el)" 输出:"leetcode" 示例 4: 输入:s = "a(bcdefghijkl(mno)p)q" 输出:"apmnolkjihgfedcbq"
提示:
Runtime: 8 ms
Memory Usage: 20.9 MB
1 class Solution { 2 func reverseParentheses(_ s: String) -> String { 3 var s1:[String] = [String]() 4 var s2:[Character] = [Character]() 5 var sb:String = String() 6 var s = Array(s) 7 for i in 0..<s.count 8 { 9 let c:Character = s[i] 10 if c == "(" 11 { 12 s2.append(c) 13 s1.append(sb) 14 sb = String() 15 } 16 else if c == ")" 17 { 18 s2.removeLast() 19 sb = String(sb.reversed()) 20 if !s1.isEmpty 21 { 22 sb.insert(contentsOf: s1.removeLast(), at:sb.startIndex) 23 } 24 } 25 else 26 { 27 sb.append(c) 28 } 29 } 30 return sb 31 } 32 }
|
请发表评论