-
Notifications
You must be signed in to change notification settings - Fork 61
Expand file tree
/
Copy path1576-replace-all-s-to-avoid-consecutive-repeating-characters.js
More file actions
39 lines (36 loc) · 1.34 KB
/
1576-replace-all-s-to-avoid-consecutive-repeating-characters.js
File metadata and controls
39 lines (36 loc) · 1.34 KB
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
39
/**
* 1576. Replace All ?'s to Avoid Consecutive Repeating Characters
* https://leetcode.com/problems/replace-all-s-to-avoid-consecutive-repeating-characters/
* Difficulty: Medium
*
* Given a string s containing only lowercase English letters and the '?' character, convert all
* the '?' characters into lowercase letters such that the final string does not contain any
* consecutive repeating characters. You cannot modify the non '?' characters.
*
* It is guaranteed that there are no consecutive repeating characters in the given string except
* for '?'.
*
* Return the final string after all the conversions (possibly zero) have been made. If there is
* more than one solution, return any of them. It can be shown that an answer is always possible
* with the given constraints.
*/
/**
* @param {string} s
* @return {string}
*/
var modifyString = function(s) {
const substitute = takenCharacteres => {
for (let charCode = 97; ; charCode++) {
const attempt = String.fromCharCode(charCode);
if (!takenCharacteres.includes(attempt)) {
return attempt;
}
}
};
const result = [...s];
for (let index = 0; index < s.length; index++) {
const takenCharacteres = [result[index - 1], result[index + 1]];
result[index] = s[index] === '?' ? substitute(takenCharacteres) : s[index];
}
return result.join('');
};