Leetcode打卡(1月5号)-1576. 替换所有的问号

126 阅读1分钟

1576. 替换所有的问号

1641395307(1).png 思路:?前后最多只有两个字符,所以?的值我们可以锁定在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;
};