思路
用两个指针保存当前剩余的最大值和最小值
根据题意,创建res结果数组;然后遍历s字符串中的每一个字符,进行判断
- 如果当前 i 位置字符为 ‘I’,则将最小值放入res的 i 位置,最小值加一
- 如果当前 i 位置字符为 ‘D’,则将最大值放入res的 i 位置,最大值减一
- 遍历结束后,将当前最大值的数,放入结果数组的最后一位返回,就是最终的结果
代码实现(java)
class Solution {
public int[] diStringMatch(String s) {
int min = 0;
int max = s.length();
int[] res = new int[max + 1];
char[] chars = s.toCharArray();
for(int i = 0; i < chars.length; i++) {
if(chars[i] == 'I') {
res[i] = min++;
} else {
res[i] = max--;
}
}
res[res.length - 1] = max;
return res;
}
}