5507. Replace All ?'s to Avoid Consecutive Repeating Characters

Replace All ?'s to Avoid Consecutive Repeating Characters

 

Account Login - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

- 질문 내용 : 문자가 연속 되지 않는 선에서 '?'의 문자를 선택해라

- 해결 접근 법

'a?c'

상기와 같이 이웃한 값이 a와 c라고 하면 a와 c를 제외한 bdefg~z 까지 아무 값이나 대입하면 된다.

가장 쉽게 하는 방법은 'a','b','c' 3개 문자만 갖고 이웃 값이 'a''b'면 'c'를 또는 'a''z' 면 'b'또는 'c'를 선택하게 하면 된다.

그런데 왜.. 난 그렇게 안했지 하고 뒤늦게 생각해 보니 모르겠다.

아무튼 그냥 26개의 알파벳 공간을 주고, 이웃하는 char의 위치에 1을 Assign하고 1이 없는 값을 대입학 만들었다.

별로 좋은건 아닌거 같다.

var modifyString = function(s) {
    let arr = s.split('');
    
    for(let i = 0; i < arr.length; i++){
        if(arr[i] == '?'){
            let alpha = new Array(26).fill(0);
        
            0 < i ? alpha[arr[i-1].charCodeAt(0) - 'a'.charCodeAt(0)] = 1 : null;
            i + 1 < arr.length ? alpha[arr[i+1].charCodeAt(0) - 'a'.charCodeAt(0)] = 1 : null;
            
            for(let j =0; j < arr.length; j++){
                if(alpha[j] == 0) {
                    arr[i] = String.fromCharCode(j + 'a'.charCodeAt(0));
                    break;
                }
            }
        }
    }
    
    return arr.join('');
};
728x90
반응형