Задача
Слово называется анаграммой другого слова, если оно может быть получено перестановкой его букв.
Входные данные
Два слова заданы в отдельных строках. Слова состоят из строчных латинских букв и цифр. Длины слов не превышают 255.
Выходные данные
Следует вывести «YES«, если введенные слова являются анаграммами друг друга и «NO» если нет.
Решение
В задаче требуется определить являются ли два введенных слова анаграммами.
Основная проблема состоит в том, что буквы находятся в словах на различных позициях и это мешает нам просто сравнить строки. Поэтому упорядочим символы в строке по алфавиту с помощью метода Arrays.sort, который вызываем в функции sortString, которая вернет нам новую отсортированную строку.
Теперь мы можем выполнить сравнение строк с помощью функции equals(), которая вернет нам true только в том случае, если строки идентичны. В таком случае и выводим «YES», а в противном случае «NO».
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String word1, word2; word1 = in.nextLine(); word2 = in.nextLine(); if (sort(word1).equals(sort(word2))) { System.out.print("YES"); } else System.out.print("NO"); } static String sort(String word1) { char[] content = word1.toCharArray(); Arrays.sort(content); return new String(content); } } |
Тест
Входные данные | Выходные данные |
sharm
marsh |
YES |
ananas
nnaass |
NO |
tommarvoloriddle iamlordvoldemort |
YES |