Проверка анаграмм в TypeScript стала проще: изучение различных подходов

В этой статье блога мы углубимся в мир проверки анаграмм с помощью TypeScript. Анаграммы — это слова или фразы, образованные перестановкой букв другого слова или фразы. Мы рассмотрим различные методы проверки того, являются ли две строки анаграммами друг друга, используя разговорный язык и примеры кода для лучшего понимания.

Метод 1: сортировка
Один из самых простых способов проверить, являются ли две строки анаграммами, — это отсортировать их символы и сравнить отсортированные строки. Давайте посмотрим, как это работает:

function isAnagramSort(str1: string, str2: string): boolean {
  const sortedStr1 = str1.split('').sort().join('');
  const sortedStr2 = str2.split('').sort().join('');
  return sortedStr1 === sortedStr2;
}
// Example usage
console.log(isAnagramSort("listen", "silent")); // true
console.log(isAnagramSort("hello", "world")); // false

Метод 2: Подсчет символов
Другой эффективный подход — подсчитать частоту появления каждого символа в обеих строках и сравнить результаты. Если счетчики совпадают для всех символов, строки являются анаграммами.

function isAnagramCount(str1: string, str2: string): boolean {
  if (str1.length !== str2.length) {
    return false;
  }
  const charCount: { [key: string]: number } = {};
  for (let char of str1) {
    charCount[char] = charCount[char] ? charCount[char] + 1 : 1;
  }
  for (let char of str2) {
    if (!charCount[char]) {
      return false;
    }
    charCount[char]--;
  }
  return true;
}
// Example usage
console.log(isAnagramCount("listen", "silent")); // true
console.log(isAnagramCount("hello", "world")); // false

Метод 3: использование карт символов
Мы также можем создать карты символов для обеих строк и сравнить их, чтобы определить, являются ли они анаграммами. Вот реализация:

function isAnagramMap(str1: string, str2: string): boolean {
  if (str1.length !== str2.length) {
    return false;
  }
  const charMap1 = createCharMap(str1);
  const charMap2 = createCharMap(str2);
  for (let char in charMap1) {
    if (charMap1[char] !== charMap2[char]) {
      return false;
    }
  }
  return true;
}
function createCharMap(str: string): { [key: string]: number } {
  const charMap: { [key: string]: number } = {};
  for (let char of str) {
    charMap[char] = charMap[char] ? charMap[char] + 1 : 1;
  }
  return charMap;
}
// Example usage
console.log(isAnagramMap("listen", "silent")); // true
console.log(isAnagramMap("hello", "world")); // false

В этой статье мы рассмотрели три различных метода проверки того, являются ли две строки анаграммами в TypeScript. Мы рассмотрели подход к сортировке, подсчету символов и использованию карт символов. Каждый метод имеет свои преимущества, и выбор зависит от конкретных требований вашего приложения.

Поняв эти методы, вы теперь сможете эффективно выполнять проверку анаграмм в своих проектах TypeScript. Независимо от того, выберете ли вы сортировку, подсчет символов или карту символов, вы сможете легко идентифицировать анаграммы.

Не забудьте адаптировать выбранный метод в зависимости от размера входных строк и требований к производительности вашего приложения. Приятного кодирования!