주어진 문자열은
nonrepeatCharacter("buzz")
즉, string = 'buzz'
라고 가정할 때를 두고 문제를 살펴보자
function nonrepeatCharacter (string) {
for(let i = 0; i < string.length; i++) {
// iterate something.
}
return // something what you want.
};
//--potter
활용
slice()
indexOf()
function nonrepeatCharacter(string) {
for(let i = 0; i < string.length; i++) {
let temp = string.slice(0, i) + string.slice(i+1); // 현재 서치 중인 값을 제외하고 새로운 문자열을 만든다.
if(temp.indexOf(string[i]) === -1) { // 주어진 string값이 임시로 만든 temp의 문자열 내 값과 일치하지 않는다면 (=없다면) -1을 리턴
return string[i];
}
}
return null; // null을 뱉으라는 조건이 있어서 null을 리턴
};
현재 주어진 값을 제외한 임시 문자열을 만든 후 indexOf()를 활용하여 검색 중인
string[i]
의 값이 temp임시 문자열 안의 문자와 같은지를 반복문을 돌려 확인한다.
indexOf는 일치하는 값이 없으면 -1을 리턴하게 되므로
-1일 경우 검색 중인 string[i]
값을 리턴하도록 했다.
쉽게 나온 알고리즘은 아니였다.
3/1 은 구글링과 개발자도구의 힘이다..
언제쯤이면 100% 내 스스로 풀어낼 수 있을까...
그래도 오늘 내 우물 안에서 벗어나
새로운 접근 방식을 깨우칠 수 있는 유의미한 시간이었다.
끝