「每日LeetCode」2021年3月12日

本文最后更新于:2023年3月19日 晚上

Lt942. 增减字符串匹配

942. 增减字符串匹配

给定只含 "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]

示例 1:

1
2
输入:"IDID"
输出:[0,4,1,3,2]

示例 2:

1
2
输入:"III"
输出:[0,1,2,3]

示例 3:

1
2
输入:"DDI"
输出:[3,2,0,1]

提示:

  • 1 <= S.length <= 10000
  • S 只包含字符 "I""D"

思路

设置 min=0,max=S.length,如果当前字符是 I 就设为 min,然后 min++,是 D 就设为 max,然后 max–。最后返回结果数组。

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* @param {string} S
* @return {number[]}
*/
var diStringMatch = function (S) {
let min = 0,
max = S.length,
i = 0;
const res = [];
while (min <= max) {
if (S[i] === "I") res[i] = min++;
else res[i] = max--;
i++;
}
return res;
};