题目
给定只含 “I”(增大)或 “D”(减小)的字符串 S ,令 N = S.length。
返回 [0, 1, …, N] 的任意排列 A 使得对于所有 i = 0, …, N-1,都有:
如果 S[i] == “I”,那么 A[i] < A[i+1]
如果 S[i] == “D”,那么 A[i] > A[i+1]
题目地址:https://leetcode-cn.com/problems/di-string-match/
思路
我的思路是先取一个比字符串大一的vector数组,题目中有增加和减少两个方向,增加的时候就取当前没有使用过的最小值,这样下一个值一定比他大,减少的时候取当前没有使用过的最大值,这样下一个就会比他小,最后把最后一个值赋值为最后一个未使用过的值
代码
class Solution {
public:
vector<int> diStringMatch(string S) {
int length = S.size();
vector<int> vec(length + 1);
int start = 0;
int end = length;
for(int i = 0; i < length; i++){
if(S[i] == 'I'){
vec[i] = start++;
}
else{
vec[i] = end--;
}
}
vec[length] = start;
return vec;
}
};