"I"(증가를 나타냄) 또는 "D"(감소를 나타냄)만 포함하는 문자열 S가 있다고 가정하고 N =S의 크기라고 가정합니다. [0, 1, ...의 순열 A를 반환해야 합니다. , N] 범위 0, ..., N-1 −
의 모든 i에 대해- S[i]가 "I"이면 A[i]
- 그렇지 않으면 S[i]가 "D"이면 A[i]> A[i+1]
따라서 입력이 "IDID"와 같으면 출력은 [0,4,1,3,2]
가 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- A :=0에서 N까지의 목록입니다. 여기서 N은 S의 크기입니다.
- res =빈 목록
- S의 각 요소 j에 대해 다음을 수행합니다.
- j가 I이면 A에서 마지막 요소를 삭제하고 res에 삽입
- 그렇지 않으면 A의 첫 번째 요소를 삭제하고 res에 삽입
- 반환 결과
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class Solution: def diStringMatch(self, S): A=[i for i in range(len(S)+1)] return [A.pop((j=='I')-1) for j in S]+A ob = Solution() print(ob.diStringMatch("IDID"))
입력
"IDID"
출력
[0, 4, 1, 3, 2]