Очень простой, но не очень эффективный способ сделать это, конвертировать ваши String
s в массивы char и использовать для них java.util.Arrays.sort, получить обратно String
s и сравнить на равенство.Если ваши строки меньше нескольких тысяч символов, это будет очень хорошо.
Если у вас несколько строк в мегабайтах, вы можете создать массив с количеством для каждого символа (используя его код в качестве индекса), имейте один проход на одну строку, добавляя один на счетчик каждого символа, и один проход на вторую строку, удаляя один.Если вы упадете ниже 0 в любой момент во время второго прохода, они не будут иметь одинаковых символов.Когда вы закончите со второй строкой без ошибок, вы уверены, что они имеют одинаковые символы, если они имеют одинаковую длину (которую вы должны были сначала проверить в любом случае).
Этот второй метод намного сложнее, чем сортировка строк, и он требует большого массива, если вы хотите работать со строками Unicode, но очень хорошо, если у вас все в порядке только с 128 символами набора ascii, и намного быстрее.
НЕ беспокойтесь, если вы не используетев ваших строках не должно быть нескольких миллионов символов.Сортировка строк намного проще и не намного медленнее для строк с парой дюжин символов.