当前位置: 首页 > 编程笔记 >

颠倒括在Python中括号内的子字符串的程序

索令
2023-03-14
本文向大家介绍颠倒括在Python中括号内的子字符串的程序,包括了颠倒括在Python中括号内的子字符串的程序的使用技巧和注意事项,需要的朋友参考一下

假设我们有一个小写的字符串s,其中包含字母和括号“(”和“)”。我们必须以递归的方式反转括号中的每个字符串,并返回结果字符串。

因此,如果输入类似于s =“ back(aps)ce”,则输出将为“ backspace”。

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个功能trav()。这将需要s,dir,start,close:= close,ans:= ans

    • 如果s [start]与其他相同,则

    • 除此以外,

    • trav(s,-dir,close [other,start]-dir)

    • 开始:=关闭[其他,开始] +目录

    • 在ans的末尾插入s [start]

    • 开始:=开始+目录

    • end:=“(”如果dir与−1相同,否则为“)”

    • 其他:=“(”如果结尾与“)”相同,否则为“)”

    • 当start <s的大小,并且s [start]与end不同时,执行

    • 在主要功能中,执行以下操作-

    • ans:=一个新列表

    • close:=一个包含键“)”和“(”)的新映射,初始值是两个空映射

    • 堆栈:=一个新列表

    • 对于s中的每个索引I和值c,

      • o:=堆栈顶部,然后从堆栈中弹出

      • close [“)”,i]:= o

      • close [“(”,o]:= i

      • 将我推入堆栈

      • 如果c与“(”相同,则

      • 否则,当c与“)”相同时,则

      • 穿越(s,1,0)

      • 返回用空白字符串连接的ans

      让我们看下面的实现以更好地理解-

      示例

      class Solution:
         def solve(self, s):
            ans = []
            close = {")": {}, "(": {}}
            stack = []
            for i, c in enumerate(s):
               if c == "(":
                  stack.append(i)
               elif c == ")":
                  o = stack.pop()
                  close[")"][i] = o
                  close["("][o] = i
            def trav(s, dir, start, close=close, ans=ans):
               end = "(" if dir == -1 else ")"
               other = "(" if end == ")" else ")"
               while start < len(s) and s[start] != end:
                  if s[start] == other:
                     trav(s, −dir, close[other][start] − dir)
                     start = close[other][start] + dir
                  else:
                     ans.append(s[start])
                     start += dir
            trav(s, 1, 0)
            return "".join(ans)
      ob = Solution()
      print(ob.solve("back(aps)ce"))

      输入值

      "back(aps)ce"
      输出结果
      backspace

       类似资料:
      • 问题内容: 我有一个样本字符串 我只想要该值而不是(在另一个内部) 如何在Python中以最简单的方式做到这一点?也许通过使用RegEx(我不擅长)? 问题答案: 怎么样: 对我来说,这打印: 请注意,调用会找到与正则表达式的第一个匹配项,因此除非您再次重复搜索,否则它将不会找到。 编辑: 这里的正则表达式是python原始字符串文字,基本上意味着反斜杠不会被视为特殊字符,而是会原样传递给方法。正

      • 问题内容: PHP字符串文字中的(花括号)是什么意思? 问题答案: 这是字符串插值的复杂(弯曲)语法。从手册中: 复杂(卷曲)语法 之所以称其为“复杂”,是因为语法复杂,而是因为它允许使用复杂的表达式。 可以通过此语法包括具有字符串表示形式的任何标量变量,数组元素或对象属性。只需以与出现在字符串外部相同的方式编写表达式,然后将其包装在和中即可。由于无法转义,因此仅在紧随其后的才会识别此语法。使用

      • 上面的正则表达式返回括号之间的文本。 如: 如何重写上面的正则表达式,所以我提供了一个类似的字符串,它将返回。i、 e带括号的部分,其中包含大括号中的字符串。

      • 当我使用之类的东西时,它仍然会触发,就像连字符无效一样。我尝试了和

      • 期望的行为 我有一个输入验证,除其他外,测试长度(

      • 问题内容: 我有一个包含标记的字符串列表。 令牌是: {ARG:token_name}。 我也有标记的哈希图,其中key是标记,value是我要用来替换标记的值。 当我使用“ replaceAll”方法时,出现错误: java.util.regex.PatternSyntaxException:非法重复 我的代码是这样的: 并且valueFromHashMap包含{和}。 我将此哈希图作为参数。