Python中的DI字符串匹配

假设我们有一个仅包含“ I”(表示增加)或“ D”(表示减少)的字符串S,令N = S的大小。我们必须返回[0,1,... ,N]使得对于范围0,...,N-1中的所有i-

  • 如果S [i]为“ I”,则A [i] <A [i + 1]

  • 否则,当S [i]为“ D”时,则A [i]> A [i + 1]

因此,如果输入类似于“ IDID”,则输出将为[0,4,1,3,2]

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

  • A:=从0到N的列表,其中N是S的大小。

  • res =空白列表

  • 对于S中的每个元素j

    • 如果j是I,则从A中删除最后一个元素并插入res

    • 否则,删除A的第一个元素并插入res

  • 返回资源

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

示例

class Solution:
   def diStringMatch(self, S):
      A=[i for i in range(len(S)+1)]
   return [A.pop((j=='I')-1) for j in S]+A
ob = Solution()print(ob.diStringMatch("IDID"))

输入值

"IDID"

输出结果

[0, 4, 1, 3, 2]