Как проверить что строки является анаграммой в PHP?

Пользователь

от jeremy_larkin , в категории: PHP , 2 года назад

Как проверить что строки является анаграммой в PHP?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от lilla.herman , 2 года назад

@jeremy_larkin Вы можете проверить что 2 строки являются анаграммой в PHP, используя функцию count_chars, которая как раз идеально подходит для решения подобного алгоритма. Посмотрите небольшой пример кода на PHP:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php

function isAnagram(string $string1, string $string2)
{
    return count_chars($string1, 1) == count_chars($string2, 1);
}

// bool(true)
var_dump(isAnagram("тест", "стет"));

// bool(false)
var_dump(isAnagram("нет", "да"));

Пользователь

от lori_jast , год назад

@jeremy_larkin Чтобы проверить, является ли одна строка анаграммой другой строки в PHP, вы можете сделать следующее:

  1. Сортируйте обе строки по алфавиту. Это позволит вам сравнить строки, не зависимо от того, в каком порядке буквы расположены.
  2. Сравните отсортированные строки. Если они равны, то строки являются анаграммами. В противном случае они не являются анаграммами.


Вот пример кода, который реализует этот подход:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
function isAnagram($string1, $string2) {
  // Удаляем пробелы из строк
  $string1 = str_replace(' ', '', $string1);
  $string2 = str_replace(' ', '', $string2);
 
  // Преобразуем строки в нижний регистр
  $string1 = strtolower($string1);
  $string2 = strtolower($string2);
 
  // Сортируем строки
  $string1 = str_split($string1);
  sort($string1);
  $string1 = implode($string1);
 
  $string2 = str_split($string2);
  sort($string2);
  $string2 = implode($string2);
 
  // Сравниваем строки
  return $string1 == $string2;
}