1576. 替换所有的问号
思路:?前后最多只有两个字符,所以?的值我们可以锁定在a,b,c上个字符内变化即可,即判断?前后字符是否存在a,不存在将?设置为a,存在则判断前后字符是否存在b,不存在则设置成b,否则c。
注意:我是用一个新的字符串作为返回值,因此在判断前面字符是应该使用新的字符串做判断(为啥呢???leetcode 1576. 替换所有的问号执行一下就知道了)
/**
* @param {string} s
* @return {string}
*/
var modifyString = function(s) {
let ans = ''
for(let i = 0; i < s.length; i++) {
if (s[i] === '?') {
if (ans[i - 1] === 'a' || s[i + 1] === 'a') {
if (ans[i - 1] === 'b' || s[i + 1] === 'b') {
ans += 'c';
} else {
ans += 'b';
}
} else {
ans += 'a';
}
} else {
ans += s[i]
}
}
return ans;
};