通过万岁!!!
- 题目:就是给你一个字符串,里面是I或者是D,要求返回一个数组。数组的要求是,如果字符串i位置是I,则数组的i<数组的i+1位置,如果字符串i位置是D,则数组的i>数组的i+1位置。
- 思路:其实我们可以发现,只要我们让I的时候就是最小的,让D时候选择一个最大的即可,然后这里用到了双指针。
- 技巧:贪心和双指针。
java代码
class Solution {
public int[] diStringMatch(String s) {
int len = s.length();
int[] ans = new int[len + 1];
int l = 0, r = len;
for (int i = 0; i < len; i++) {
if (s.charAt(i) == 'I') {// 选择一个最小的
ans[i] = l;
l++;
} else {// 选择一个最大的
ans[i] = r;
r--;
}
}
ans[len] = r;
return ans;
}
}
- 总结:题目比较简单,但是关键是找到这个贪心,就是I就写最小的,D就写最大的。