[TIL]문자열 내 중복되지 않는 문자열 찾기

이재훈·2020년 9월 14일
0

주어진 문자열은
nonrepeatCharacter("buzz")
즉, string = 'buzz'
라고 가정할 때를 두고 문제를 살펴보자

Skeleton

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() 메서드는 호출한 String 객체에서 주어진 값과 일치하는 첫 번째 인덱스를 반환합니다. 일치하는 값이 없으면 -1을 반환합니다.

indexOf는 일치하는 값이 없으면 -1을 리턴하게 되므로
-1일 경우 검색 중인 string[i]값을 리턴하도록 했다.

Potter's thought :)

쉽게 나온 알고리즘은 아니였다.
3/1 은 구글링과 개발자도구의 힘이다..

언제쯤이면 100% 내 스스로 풀어낼 수 있을까...

그래도 오늘 내 우물 안에서 벗어나
새로운 접근 방식을 깨우칠 수 있는 유의미한 시간이었다.

profile
코딩에서 인생을 배우다.

0개의 댓글