У меня есть две строки, и я хотел бы проверить, являются ли они анаграммами друг друга.
Чтобы проверить, является ли строка A анаграммой строки B, символы A и B сортируются. Если полученные отсортированные строки точно совпадают, строка A и строка B являются анаграммами друг друга.
Я разбиваю
строки на массивы символов, используя процедуру Perl sort
, соединяю
символы вместе и проверяю равенство строк с eq
:
sub anagram
{
my ($s1, $s2) = @_;
return (join '', sort { $a cmp $b } split(//, $s1)) eq
(join '', sort { $a cmp $b } split(//, $s2));
}
Есть ли способ избежать преобразования между скалярным типом и типом массива (полагаясь на join
и split
)? И если да, то какой метод более эффективен?