🌴 문제
문자열을 입력받아 아이소그램인지 여부를 리턴해야 합니다. 아이소그램(isogram)은 각 알파벳을 한번씩만 이용해서 만든 단어나 문구를 말합니다.
🌴 출력
문자열을 입력받아 아이소그램인지 여부를 리턴해야 합니다. 아이소그램(isogram)은 각 알파벳을 한번씩만 이용해서 만든 단어나 문구를 말합니다.
🌴 주의 사항
빈 문자열을 입력받은 경우, true를 리턴해야 합니다.
대소문자는 구별하지 않습니다.
🌴 입출력 예시
let output = isIsogram('aba');
console.log(output); // false
output = isIsogram('Dermatoglyphics');
console.log(output); // true
output = isIsogram('moOse');
console.log(output); // false
🌴 문제 풀이
function isIsogram(str) {
// TODO: 여기에 코드를 작성합니다.
// 문자열을 입력받아서 각 알파벳을 한번씩만 이용해서 만든 단어 -> 같은 알파벳이 없어야한다.
// str을 소문자로 바꿔주기
// 동일한 알파벳이 있는지 확인하기
let result = true;
let smStr = str.toLowerCase();
let arrayStr = smStr.split('');
for(let i=0; i<arrayStr.length; i++){
if(arrayStr.includes(arrayStr[i]) && arrayStr.indexOf(arrayStr[i]) !== i){
return false;
}
}
return result;
}
문자열을 배열로 바꾼 후에 배열의 includes와 indeOf 메소드를 사용하여 요소의 index가 다르면서 동일한 문자가 있는지 여부를 확인하였다.
function isIsogram(str) {
if (str.length === 0) {
return true;
}
let cache = {};
let strLowered = str.toLowerCase();
for (let i = 0; i < strLowered.length; i++) {
if (cache[strLowered[i]]) {
return false;
}
cache[strLowered[i]] = true;
}
return true;
}
객체의 key와 value를 이용하여 동일한 key의 값이 있다면 false를 반환한다.
'알고리즘' 카테고리의 다른 글
decryptCaesarCipher (0) | 2022.06.21 |
---|---|
numberSearch (0) | 2022.06.20 |
modulo (0) | 2022.06.15 |
superIncreasing (0) | 2022.06.14 |
readVertically (0) | 2022.06.13 |