Perl: Сортировка символов в строке

У меня есть две строки, и я хотел бы проверить, являются ли они анаграммами друг друга.

Чтобы проверить, является ли строка 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 )? И если да, то какой метод более эффективен?

12
задан ardnew 12 January 2012 в 19:14
поделиться