1. 程式人生 > >leetcode 942 DI String Match

leetcode 942 DI String Match

leetcode 942 DI String Match

1.題目描述

給定只含 "I"(增大)或 "D"(減小)的字串 S ,令 N = S.length

返回 [0, 1, ..., N] 的任意排列 A 使得對於所有 i = 0, ..., N-1,都有:

如果 S[i] == "I",那麼A[i] < A[i+1]
如果 S[i] == "D",那麼 A[i] > A[i+1]

示例 1:

輸出:“IDID”
輸出:[0,4,1,3,2]
示例 2:

輸出:“III”
輸出:[0,1,2,3]
示例 3:

輸出:“DDI”
輸出:[3,2,0,1]

提示:

1 <= S.length <= 1000
S 只包含字元 “I” 或 “D”。

2.解題思路

先找到一共包含“D”的數量,即可知道開始時的數字(因為這樣每次遇到“D”時減一正好可以使最後一個“D”減到0),然後每遇到“I”時增1,遇到“D”時減一即可。

3.Python程式碼

class Solution:
    def diStringMatch(self, S):
        """
        :type S: str
        :
rtype: List[int] """ right=left=S.count("D") res=[left] for i in range(len(S)): if S[i]=="D": left-=1 res.append(left) else: right+=1 res.append(right) return res