LeetCode #1544 Make The String Greate
// 테스트케이스 통과 실패
var makeGood = function(s) {
const reg = /[A-Z]/;
let result = "";
if(s.length <= 1) return s;
function isGood(str) {
let temp = "";
for(let i = 0; i < str.length; i++) {
if(str[i].toUpperCase() == str[i+1]) {
temp = str.slice(0, i) + str.slice(i+2, str.length);
}
}
return reg.test(temp) ? isGood(temp) : result = temp;
}
isGood(s);
return result;
};
// 다른 분의 풀이
var makeGood = function(s) {
let stack = [s[0]];
let i = 1;
while (i < s.length) {
let len = stack.length - 1;
let flag = false;
if (stack.length) {
if (/[a-z]/.test(stack[len]) && s[i] === stack[len].toUpperCase()) {
stack.pop();
flag = true;
}
else if (/[A-Z]/.test(stack[len]) && s[i] === stack[len].toLowerCase()) {
stack.pop();
flag = true;
}
}
if (!flag) stack.push(s[i]);
i++;
}
return stack.join('');
};
포인트 ① stack 배열 어떻게 이용했는지 학습
포인트 ② flag 변수 사용