942. DI String Match
💡に答える
/**
* @param {string} s
* @return {number[]}
*/
var diStringMatch = function (s) {
let answer = [];
let j = 0;
let k = 0;
for (let i = 0; i < s.length; i++) {
if (s[i] === 'I') {
answer.push(j);
j++;
} else {
answer.push(s.length - k);
k++;
}
}
s[s.length - 1] === 'I' ? answer.push(answer[answer.length - 1] + 1) : answer.push(answer[answer.length - 1] - 1);
return answer;
};
let s = 'IDID';
diStringMatch(s);
// 다른 사람의 풀이
const diStringMatch = (S) => {
let num = [];
let inc = 0;
let dec = S.length;
let i = 0;
while (num.length !== S.length + 1) {
num[i] = S[i] === 'D' ? dec-- : inc++;
i++;
}
return num;
};
📝整理する
問題は、0と
s.length
の間の数字をI(=0일 때)
とD(s.length일 때)
に区別することです.2つのポインタ
j, k
を使用して、s[i] === 'I'
の場合はj
、反対の場合はk
を加えて、s
の長さから対応する長さを減算します.Discussionは、
answer
配列に直接プッシュするのではなく、インデックス内の要素をそのままに変換します.修正、指摘を歓迎します!
質問リンク
https://leetcode.com/problems/di-string-match/
LeetCode GitHub
https://github.com/tTab1204/LeetCode
Reference
この問題について(942. DI String Match), 我々は、より多くの情報をここで見つけました https://velog.io/@ken1204/942.-DI-String-Matchテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol