假设我们有一个仅包含“ 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]