Изограмма в Javascript [закрыт]

113
27 августа 2019, 03:50

Нужно написать функцию,которая определяет, изограмма ли данный текст (слово) или нет, то есть в нем повторяются буквы или нет.

Например: слово Андрей - изограм, слово Анастасия - нет.

Answer 1

Можно так:

function isIsogram(str) {
  const normalized = str.replace(/\s/g, '').toLowerCase();
  return normalized.length === new Set(normalized).size;
}
console.log(isIsogram('Андрей'));
console.log(isIsogram('Анастасия'));
Answer 2

const isIsogram = (str) => !!str.toLowerCase().split``.filter((h => v => (h[v] = (h[v] || 0) + 1) === 2)({})).length; 
 
 
console.log(isIsogram('Анастасия')); 
console.log(isIsogram('Андрей'));

Answer 3

Данное решение предполагает только один проход по буквам слова, соответственно работает за линейное время O(n)

const isIsogram = (str) => { 
  const check = {}; 
  for (const l of str) { 
    if (check[l]) return true; 
    check[l] = true; 
  } 
  return false; 
} 
 
 
console.log(isIsogram('Анастасия')); 
console.log(isIsogram('Андрей'));

Answer 4

Неочевидно, должны ли считаться разными символы, отличающиеся регистром. Если да, то можно так:

const isIsogram = str => new Set(str).size === str.length; 
 
console.log(isIsogram('Анастасия')); 
console.log(isIsogram('Андрей'));

Если нет, то можно написать new Set(str.toLowerCase()).

READ ALSO
Вызвать подфункцию в js

Вызвать подфункцию в js

Есть js функция модального окна внутри, которого есть такие функции как открыть, закрыть модальное окноТеперь надо при нажатии на <button class="choose">ok</button>...

112
Angular- Кастомный элемент формы, не работает formControlName

Angular- Кастомный элемент формы, не работает formControlName

Написал собственный компонент с поддержкой ReactiveFormsКогда указываю свой компонент в template и использую formControl="form

122
Визуализация наложения рамы на фото

Визуализация наложения рамы на фото

Делаю калькулятор для сайта багетной мастерскойПри выборе багета (рамы, в которую будет вставлена картина), нужно фото этого багета накладывать...

151