class Solution {
    public int[] diStringMatch(String s) {
        int maxInd = s.length(), len = s.length();
        int minInd = 0, index = 0;
        int[] result = new int[maxInd + 1];
 
        for (int i = 0; i < len; i++) {
            if (s.charAt(i) == 'I') {
                result[index++] = minInd++;
            } else {
                result[index++] = maxInd--;
            }
 
            // Last char
            if (i == len - 1) {
                if (s.charAt(i) == 'I') {
                    result[index] = result[index - 1] + 1;
                } else {
                    result[index] = result[index - 1] - 1;
                }
            }
        }
 
        return result;
    }
}
 
public class DIStringMatch {
  public static void main(String[] args) {
    String s = new String("IDID");
    Solution solution = new Solution();
 
    int[] perm = solution.diStringMatch(s);
 
    for (int i = 0; i < perm.length; i++) {
      System.out.println(perm[i]);
    }
  }
}