[JS알고리즘] 중복문자 제거 (indexOf)



소문자로 된 문자가 입력되면 중복된 문자를 제거하고 출력하시오


function solution(s){
	let answer="";
  for(let i=0; i<s.length; i++){	//인덱스를 알아야하기 때문에 for of 사용하면 안됨
    if(s.indexOf(s[i]) == i) answer += s[i];
  }
  
  return answer;
}

let str = "ksekkset";
console.log(solution(str))

indexOf 는 찾고자 하는 문자열(첫번쨰 인자)이 첫번쨰로 발견되는 인덱스를 리턴한다.

두번째 인자는 받은 인자의 인덱스 이후에 발견되는 첫번쨰 문자열을 찾으라는 것이다

중복된 문자열들은 인덱스 is.indexOf(s[i]) 이 다르다.

자기 자신의 인덱스와 찾으려고 하는 문자열의 인덱스가 다른다는 것은 자신보다 먼저 발견된 문자열이 존재한다는 뜻이므로 중복된다는 것을 알 수 있다.

그래서 중복된 문자열들은 제거하고 처음으로 발견된 문자들만 answer에 넣어주면 된다


보충)) indexOf로 특정문자열의 갯수 찾기

function solution(s){
	let answer =0 ;
  let pos = s.indexOf('k');
  while(pos != -1){
    answer++;
    pos = s.indexOf('k',pos+1)
  }
  
  
  return answer;
}

let str = "ksekkset";
console.log(solution(str))

` s.indexOf(‘k’);` k의 첫번쨰 위치를 찾는다.

문자열을 찾지 못하면 -1이 되므로 while문이 break가 되므로 그냥 빠져나갈것이고

만약 찾는다면 answer의 값을 1증가시킨뒤

pos에도 +1을 해줌으로써 pos+1의 인덱스 이후에 발견되는 문자열을 다시 찾으라고 하면 된다.





inflearn 자바스크립트 알고리즘 강의 내용 =)




© 2018. by sora

Powered by sora