leetcode 484. Find Permutation
贪心算法全靠细心,思路简单:
初始: S[0] = 'I', 设为1。cur 变量用来记录前面最大的值(因为所求的为置换关系),后续有多少个D,则当前写入最大的值,后续依次减小就可以。
class Solution(object):
def findPermutation(self, s):
"""
:type s: str
:rtype: List[int]
"""
res = []
cur = 1
i = 0
while i<len(s):
if i==0:
if s[i]=='I':
cur = 1
res += [cur]
else:
cur = 0
# res += [cur]
# j = (s[j]=='D')?i:(i+1)
if s[i]== 'D':
j = i
else:
j = i+1
cntD = 0
while j<len(s) and s[j]=='D':
j += 1
cntD += 1
# cntD = j-i
cur = cntD + cur + 1
# print(cur)
res += [cur]
for h in range(cntD):
res += [cur- 1 - h]
i = j
return res