1. 程式人生 > >leetcode (DI String Match)

leetcode (DI String Match)

Title: DI String Match     942

Difficulty:Easy

原題leetcode地址:   https://leetcode.com/problems/di-string-match/

 

1.  見程式碼註釋

時間複雜度:O(n),兩次一層for迴圈。

空間複雜度:O(n),申請額外空間陣列,最後需要返回這個陣列。

    /**
     * 假設需要求解的陣列遞增,將遇到D時,將其對應的位置賦最大值,後面遇到D,依次減一,最後將沒有賦值的陣列的位置從0開始賦值
     * @param S
     * @return
     */
    public static int[] diStringMatch(String S) {

        int n = S.length() + 1;
        int res[] = new int[n];

        for (int i = 0; i < S.length(); i++) {
            if (S.charAt(i) == 'D') {
                res[i] = --n;
            }
        }

        int k = 0;
        for (int i = 0; i < res.length; i++) {
            if (res[i] == 0) {
                res[i] = k++;
            }
        }

        return res;

    }