[LeetCode] DI String Match

아르당·4일 전

LeetCode

목록 보기
205/213
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

[0, n] 범위의 모든 정수 중에서 n + 1개의 정수로 이루어진 순열 perm은 다음과 같은 길이 n의 문자열 s로 표현될 수 있다.

  • s[i] == 'I' if perm[i] < perm[i + 1]
  • s[i] == 'D' if perm[i] > perm[i + 1]

문자열 s가 주어졌을 때, 순열 perm을 재구성해서 반환해라. 유효한 순열 perm이 여러 개 있는 경우, 그 중 하나를 반환해라.

Example

#1
Input: s = "IDID"
Output: [0, 4, 1, 3, 2]

#2
Input: s = "III"
Output: [0, 1, 2, 3]

#3
Input: s = "DDI"
Output: [3, 2, 0, 1]

Constraints

  • 1 <= s.length <= 10^5
  • s[i]는 'I'나 'D' 둘 중 하나이다.

Solved

class Solution {
    public int[] diStringMatch(String s) {
        int n = s.length();
        int[] result = new int[n + 1];
        int low = 0;
        int high = n;

        for(int i = 0; i < n; i++){
            if(s.charAt(i) == 'I'){
                result[i] = low++;
            }else{
                result[i] = high--;
            }
        }

        result[n] = low;

        return result;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글