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 }
  • 相关阅读:
    (转) Linux中profile、bashrc、bash_profile之间的区别和联系
    Ubuntu 安装MyEclipse10
    VMware_ubuntu设置共享文件夹
    (转载)Android出现“Read-only file system”解决办法
    Android 执行 adb shell 命令
    android传感器使用
    Android源码下载和编译过程
    jquery实现的ajax
    转载SQL_trace 和10046使用
    查看Oracle相关日志 ADRCI
  • 原文地址:https://www.cnblogs.com/strengthen/p/11521663.html
Copyright © 2011-2022 走看看