Given a string S that only contains "I" (increase) or "D" (decrease), let N = S.length.

Return any permutation A of [0, 1, …, N] such that for all i = 0, …, N-1:

If S[i] == "I", then A[i] < A[i+1]
If S[i] == "D", then A[i] > A[i+1]

Example 1:
Input: "IDID"
Output: [0,4,1,3,2]

Example 2:
Input: "III"
Output: [0,1,2,3]

Example 3:
Input: "DDI"
Output: [3,2,0,1]

Note:

  • 1 <= S.length <= 10000
  • S only contains characters "I" or "D".

Solution in python:

class Solution:
    def diStringMatch(self, S: str) -> List[int]:
        i = 0
        j = len(S)
        result = []
        for item in S:
            if item == 'I':
                result.append(i)
                i += 1
            if item == 'D':
                result.append(j)
                j -= 1
        result.append(j)
        return result
最后修改日期: 2021年2月26日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。