Problem
- An isogram is a word that has no repeating letters, consecutive or non-consecutive.
- Ignore letter case.
Solution 01
function isIsogram(str) {
str = str.toLowerCase();
for (let i = 0; i < str.length; i++) {
for (let j = i + 1; j < str.length; j++) {
if (str[i] === str[j]) {
return false;
}
}
}
return true;
}
isIsogram(''); // true
isIsogram('isogram'); // true
isIsogram('isIsogram'); // false
toLowerCase()
: 문자열을 소문자로 변환한다.
Solution 02
function isIsogram(str) {
let arr = str.toLowerCase().split('').sort();
for (let i = 0; i < arr.length - 1; i++) {
if (arr[i] === arr[i + 1]) {
return false;
}
}
return true;
}
isIsogram(''); // true
isIsogram('isogram'); // true
isIsogram('isIsogram'); // false
split()
: 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.
sort()
: 배열의 element를 정렬한 후, 그 배열을 반환한다.
Solution 03
function isIsogram(str) {
return !str.match(/([a-z]).*\1/i);
}
isIsogram(''); // true
isIsogram('isogram'); // true
isIsogram('isIsogram'); // false
match()
: 문자열에서 정규식과 일치하는 문자를 검색하고, 배열로 반환한다.
.
: 개행 문자를 제외한 모든 문자와 대응
*
: 0회 이상 연속으로 반복되는 부분과 대응
\n
: ??
i
: 대소문자 구분 없는 검색