[JS알고리즘] 중복문자 제거 (indexOf)
in Algorithm
소문자로 된 문자가 입력되면 중복된 문자를 제거하고 출력하시오
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
는 찾고자 하는 문자열(첫번쨰 인자)이 첫번쨰로 발견되는 인덱스를 리턴한다.
두번째 인자는 받은 인자의 인덱스 이후에 발견되는 첫번쨰 문자열을 찾으라는 것이다
중복된 문자열들은 인덱스 i
와 s.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 자바스크립트 알고리즘 강의 내용 =)