Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/47: Рейтинг темы: голосов - 47, средняя оценка - 4.60
13 / 9 / 10
Регистрация: 03.06.2016
Сообщений: 50

Задача с анаграммами - логика программы

05.06.2016, 23:28. Показов 9962. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дорогие друзья помогите пошагово разобрать задачу с анаграммами

Пользователь вводит через один пробел слова. Найти все группы анаграмм (слов, составленных из одних и тех же букв) в этой строке и вывести на устройство вывода их каждую с новой строки, все слова должны идти через пробел в порядке, в котором они встречаются в строке. При этом допускается выводить одинаковые слова в одной строке анаграмм. Слова состоящие из разного количества одинаковых букв анаграммами не являются. Пример:

Входная строка: «123*456*231*546*231*312 4556»

Результат:
123*231*231*312
456*546
4556

Что я сделал:
- принимаю строку
- перевожу из строки слова в массив
- далее беру первое слово из массива и сравниваю по символьно с вторым словом из массива
и допустим 123 с 321 совпало что делать дальше я никак не могу сообразить. Прошу помогите поэтапно разложить.

Привожу свой код. Здесь я пытаюсь сравнить первое слово со вторым, чтобы потом переделать под массив как то так...

Кликните здесь для просмотра всего текста
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 package pkgchar;
import java.util.Scanner;
 
public class Char {
 
    public static void main(String[] args) {
      
    Scanner in = new Scanner(System.in);
    
    System.out.println("Введите первое число ");
    String  text1 = in.nextLine(); //считываем одну строку целиком
    char[] ch3 = text1.toCharArray(); // преобразуем строку в массив данных
    
    System.out.println("Введите второе число ");
    String  text2 = in.nextLine(); //считываем одну строку целиком
    char[] ch4 = text2.toCharArray(); // преобразуем строку в массив данных
       
if(text1.length()==text2.length()){ // Сравниваем длину строки 1 с длиной строки 2 
    int timer = 0;   
    
    for(int i = 0; i <= ch3.length - 1; i = i + 1) {
          for(int j = 0; j <= ch4.length - 1; j = j + 1) {
              if (ch3[i]==ch4[j]){
                  timer = timer + 1;
               //System.out.println("Символы одинаковые " + ch3[i] + " " + ch4[j]); промежуточное выполнение программы
                  
                 }
            }
        }  
    System.out.println("Символы совпали " + timer + " раз");
    
    if(timer == text1.length()){
       System.out.println("Слова являются анаграммами"); 
     }
    else{
       System.out.println("Слова не являются анаграммами");
    }
    }
 
else{
    System.out.println("Слова не являются анаграммами");  
}
    }    
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.06.2016, 23:28
Ответы с готовыми решениями:

Являются ли две строки анаграммами
Реализуйте метод, проверяющий, являются ли две строки анаграммами, т.е. можно ли простой перестановкой символов получить из одной строки...

Проверить, являются ли 2 строки анаграммами
Добрый день Необходимо узнать, являются ли 2 строки анаграммами Правильно ли я рассуждаю, что необходимо сравнить длину двух строк, а...

Проверить являются ли две строки анаграммами
Доброго времени суток. Требуется свежий взгляд. Я пишу программу, которая проверяет, являются ли две строки анаграммами. Анаграмма - это...

28
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
09.06.2016, 11:29
Студворк — интернет-сервис помощи студентам
Aviz__,
Цитата Сообщение от Aviz__ Посмотреть сообщение
какиенить преобразования для создания уникальных "сумм
(int)'0' будет 48 и если в числе две тройки, то (51 + 51) будет не равно шестёрке (54) но нужно этот вариант более пристально рассмотреть...
0
 Аватар для Aviz__
2762 / 2069 / 510
Регистрация: 17.02.2014
Сообщений: 9,507
09.06.2016, 11:37
Не, HOBATOP, тут нужно, либо сортировать, как уже выше предлагалось, либо что-то еще, чтобы одинаковый набор символов, расположенных в разных последовательностях, давал одно число.
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
09.06.2016, 13:11
Aviz__, я же не настаиваю, просто предложил вариант, вроде бы как позволяющий однозначно сказать, что одинаковыми символами наполнена строка или нет. Просто в качестве примера:
Java
1
2
3
4
5
6
7
8
9
10
        String str = "1234 4312 58 80 569 10 18 33333 01 81 80 695 3421 6060";
        String[] splitStr = str.split(" ");
        for (String temp : splitStr) {
            char[] charStr = temp.toCharArray();
            int sum = 0;
            for (char tmp : charStr) {
                sum += (int) tmp;
            }
            System.out.println(temp + " = " + sum);
        }
Вроде рулит... Хотя надо ещё присмотреться...
0
 Аватар для Aviz__
2762 / 2069 / 510
Регистрация: 17.02.2014
Сообщений: 9,507
09.06.2016, 13:28
HOBATOP, не, как уже указывали выше, это предложение: 5674, 4567, 3388, 13, 8860 ломает все((
0
84
 Аватар для 84
28 / 33 / 12
Регистрация: 11.04.2016
Сообщений: 132
09.06.2016, 13:33
Цитата Сообщение от Aviz__ Посмотреть сообщение
Существуют ли какиенить преобразования для создания уникальных "сумм", для разных комбинаций одних и тех же символов?
да, если их перед этим предварительно отсортировать.
0
 Аватар для Aviz__
2762 / 2069 / 510
Регистрация: 17.02.2014
Сообщений: 9,507
09.06.2016, 13:43
84, Шутник, однако!
0
13 / 9 / 10
Регистрация: 03.06.2016
Сообщений: 50
09.06.2016, 23:55  [ТС]
ninjacut,

Не по теме:

Мне эту задачу дали на собеседовании стажера-программиста 1С, тогда что будут спрашивать если на Juniora собеседоваться? Или все же она не такая сложная как кажется?

0
10.06.2016, 11:23

Не по теме:


Psyh, по-моему вообще не сложная. На джуниора на 1С без понятия что могут спрашивать, это все-таки не Java же.

0
13 / 9 / 10
Регистрация: 03.06.2016
Сообщений: 50
10.06.2016, 22:03  [ТС]
ninjacut, Большое пасибо за подсказку с Map ))) вроде получилось решить задачу. Может не совсем красиво, но работает.

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
26
27
28
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);    
        System.out.println("Введите слова через пробел: ");
        String   text = in.nextLine();    
        String[] words = text.split(" "); 
        
        Map<String, String> map = new HashMap<String,String>();
        for(int i = 0; i <= words.length - 1; i++){
        String tmpWord = words[i]; 
        char [] sym = words[i].toCharArray(); 
            
        Arrays.sort(sym); 
            
        String wordkey = new String(sym); 
            
        String value = map.get(wordkey);
        if(value == null){
            map.put(wordkey, tmpWord );  
        }else{
             map.put(wordkey, value + " " + tmpWord); 
        }            
        }
         System.out.println();
        for(String k2 : map.values()){
           System.out.println(k2);
        }
    }
}
Результат работы:
Code
1
2
3
4
5
Введите слова через пробел: 
123 321 213 312 567 765 657
 
123 321 213 312
567 765 657
Но при вводе слов выводит вместо слов кракозябры, как с этим бороться?
Миниатюры
Задача с анаграммами - логика программы  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.06.2016, 22:03

Логика программы
Всем доброго времени суток! Помогите, пожалуйста, понять логику программы (код дан целиком) по теме связанные списки типа очередь. Код взят...

Логика программы
Объясните пожалуйста мне саму логику программы, код я напишу сам Условие задачи: Множество символов I-ричной системы счисления...

Логика программы
Всем привет!!! Делаю БД с помощью АДО компонентов...начались всякие косяки...=( Щас расскажу: Запускаем БД - загружается главная форма...

Логика работы программы
Помогите доработать программу. Я застопорился на логике её работы и никак не могу заставить ее нормально работать. Ткните меня в мои...

Интересная сложная задача: Рекурсивный запрос + логика
Помогите кто может, уже неделю не могу разобраться! У меня есть данные в таблице. Это RDF триплеты, но можно об этом не думать. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru