leetcode 942 DI String Match
阿新 • • 發佈:2018-11-20
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