题目描述
给定只含 “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]
思路分析
- 遍历S,如果是“I” 的话,就从0开始append到结果里,如果是“D”的话从最后一个数append到结果中
- 最后将当前的initial或者high,用append方法,放入res中
代码示例
class Solution(object):
def diStringMatch(self, S):
"""
:type S: str
:rtype: List[int]
"""
initial = 0
high = len(S)
res = []
for i in S:
if i == "I":
res.append(initial)
initial += 1
else:
res.append(high)
high -= 1
res.append(initial)
return res
- 2019年3月27日 于燕南