-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy path1544-make-the-string-great.js
38 lines (35 loc) · 1.08 KB
/
1544-make-the-string-great.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
* 1544. Make The String Great
* https://leetcode.com/problems/make-the-string-great/
* Difficulty: Easy
*
* Given a string s of lower and upper case English letters.
*
* A good string is a string which doesn't have two adjacent characters s[i] and s[i + 1] where:
* - 0 <= i <= s.length - 2
* - s[i] is a lower-case letter and s[i + 1] is the same letter but in upper-case or vice-versa.
*
* To make the string good, you can choose two adjacent characters that make the string bad and
* remove them. You can keep doing this until the string becomes good.
*
* Return the string after making it good. The answer is guaranteed to be unique under the given
* constraints.
*
* Notice that an empty string is also good.
*/
/**
* @param {string} s
* @return {string}
*/
var makeGood = function(s) {
const stack = [];
for (const char of s) {
const lastChar = stack[stack.length - 1];
if (lastChar && ((char.toLowerCase() === lastChar.toLowerCase()) && (char !== lastChar))) {
stack.pop();
} else {
stack.push(char);
}
}
return stack.join('');
};