Replace All ?'s to Avoid Consecutive Repeating Characters
- 질문 내용 : 문자가 연속 되지 않는 선에서 '?'의 문자를 선택해라
- 해결 접근 법
'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
반응형
'Problem Solving' 카테고리의 다른 글
5509. Minimum Deletion Cost to Avoid Repeating Letters (0) | 2020.09.06 |
---|---|
5508. Number of Ways Where Square of Number Is Equal to Product of Two Numbers (0) | 2020.09.06 |
자물쇠와 열쇠 (0) | 2020.09.06 |
가사 검색 (0) | 2020.09.04 |
[1차] 뉴스 클러스터링 (0) | 2020.09.04 |