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