zoukankan      html  css  js  c++  java
  • [Swift]LeetCode1190. 反转每对括号间的子串 | Reverse Substrings Between Each Pair of Parentheses

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(www.zengqiang.org
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/11521663.html
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    Given a string s that consists of lower case English letters and brackets. 

    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:

    • 0 <= s.length <= 2000
    • s only contains lower case English characters and parentheses.
    • It's guaranteed that all parentheses are balanced.

    给出一个字符串 s(仅含有小写英文字母和括号)。

    请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。

    注意,您的结果中 不应 包含任何括号。

    示例 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"
    

    提示:

    • 0 <= s.length <= 2000
    • s 中只有小写英文字母和括号
    • 我们确保所有括号都是成对出现的

    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 }
  • 相关阅读:
    人月神话读后感2
    大三学习进度13
    大三学习进度16
    大三学习进度14
    大三学习进度11
    大三学习进度15
    人月神话读后感3
    大三学习进度10
    Linux设备树
    clk_enable
  • 原文地址:https://www.cnblogs.com/strengthen/p/11521663.html
Copyright © 2011-2022 走看看