First non-repeating character ( 5 kyu )

문제

Write a function named firstNonRepeatingLetter† that takes a string input, and returns the first character that is not repeated anywhere in the string.

For example, if given the input ‘stress’, the function should return ‘t’, since the letter t only occurs once in the string, and occurs first in the string.

As an added challenge, upper- and lowercase letters are considered the same character, but the function should return the correct case for the initial letter. For example, the input ‘sTreSS’ should return ‘T’.

If a string contains all repeating characters, it should return the empty string (“”).

문자열중에 중복되지 않는 첫번째 알파벳을 리턴하는 문제,

대소문자를 구별하지 않음

풀이

function firstNonRepeatingLetter(s) {
  let low = s.toLowerCase();
  for ( let i = 0; i < s.length; i++ ) {
    if ( low.indexOf(low[i]) === low.lastIndexOf(low[i]) ) {
      return s[i]
    }
  }
  return '';
}

문자열을 소문자로 바꾼 뒤에 포문을 돌며 indexOf와 lastIndexOf를 비교해 둘의 인덱스가 같다면 해당 문자를 리턴

다른 사람의 풀이

function firstNonRepeatingLetter(s) {
  for(var i in s) {
    if(s.match(new RegExp(s[i],"gi")).length === 1) {
      return s[i];
    }
  }
  return '';
}

대소문자를 구별하지 않는 문제에서는 정규식을 사용할 줄 알면 좋을 것 같다.


'자료구조, 알고리즘 > Codewars 문제' 카테고리의 다른 글

Greed is Good ( 5 kyu )  (0) 2017.11.30
Two Joggers ( 5 kyu )  (0) 2017.11.30
Perimeter of squares in a rectangle ( 5 kyu )  (0) 2017.11.29
Palindrome chain length ( 5 kyu )  (0) 2017.11.29
Tribonacci Sequence ( 6 kyu )  (0) 2017.11.28

+ Recent posts