Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
SAZl
2 / 9 / 2
Регистрация: 12.10.2011
Сообщений: 173
#1

Анограммы - Android

19.05.2014, 16:14. Просмотров 275. Ответов 3
Метки нет (Все метки)

В общем у меня есть экран, который содержит 2 текстовых поля для ввода слов, кнопку, при нажатии на которой в текстовое поле выдаётся сообщение являются ли 2 слова анаграммами. Так вот кто подскажет алгоритм проверки на анаграммы? Пока затупил именно на этом месте.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
19.05.2014, 19:40     Анограммы #2
Не думаю что есть "класический" алгоритм. Уж слишком редкая задача. Но... Либо:
1) сделать копию строки и выкидывать посимвольно найденные из второй строки. Удача если в результате пустая строка и цикл в конце.
2) сделать таблицу логических на размер одной из строк. Перещелкивать на ДА если символ из одной строки в другой и НЕТ в таблице.

Предварительно сверить размеры строк.

1) кривее, но проще. 2) правильнее, но сложнее.
SAZl
2 / 9 / 2
Регистрация: 12.10.2011
Сообщений: 173
19.05.2014, 20:02  [ТС]     Анограммы #3
А есть уже готовые решения?

Добавлено через 19 минут
Вот например:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.Arrays;
import java.util.Scanner;
public class Anagram {
public static void main(String[] args) {
char[] test1;
char[] test2;
Scanner input = new Scanner(System.in);
System.out.print("Enter first phrase>");
test1 = input.nextLine().replaceAll(" ", "").toCharArray();
Arrays.sort(test1);
System.out.print("Enter second phrase>");
test2 = input.nextLine().replaceAll(" ", "").toCharArray();
Arrays.sort(test2);
if (test1.equals(test2)) {
System.out.println("Is an anagram.");
}
else {
System.out.println("Is not an anagram.");
}
/* debugging */
System.out.println(test1);
System.out.println(test2);
System.out.println(test1.equals(test2));
}
}
Результат работы:
Java
1
2
3
4
5
6
Enter first phrase>CS AT WATERLOO
Enter second phrase>COOL AS WET ART
Is not an anagram.
AACELOORSTTW
AACELOORSTTW
false
Как мне этот код подогнать под мою Activity? Я уже нарисовал два editText + кнопку вызова.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
19.05.2014, 20:12     Анограммы #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от SAZl Посмотреть сообщение
Arrays.sort(test1);
Тоже интересное решение... И действитеьно стоит удалить пробелы.

Цитата Сообщение от SAZl Посмотреть сообщение
Как мне этот код подогнать под мою Activity? Я уже нарисовал два editText + кнопку вызова.
Тяжело помочь не зная Вашего уровня... А писать ВМЕСТО Вас не хочется...
1) Начитесь кнопкой получать текст из редакторов и выводить его в лог. Или в тектовое поле ("да-нет")
2) Измените алгоритм кнопки на работу со строками... Алгоритм внешне правильный...

Добавлено через 45 секунд
По "кодерству" советую задавать вопросы здесь: http://www.cyberforum.ru/android-dev/
Yandex
Объявления
19.05.2014, 20:12     Анограммы
Ответ Создать тему
Опции темы

Текущее время: 01:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru