Задать вопрос
@Alexzatey

Дали мне тестовое задание, я решил его, но почему то оно неправильно?

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

- участвуют только буквы русского алфавита а-я;
- все буквы в нижнем регистре;
- за один шаг можно преобразовать все вхождения одной буквы в другую.

Входные данные
Входная информация поступает из стандартного ввода в виде одной строки. В этой строке содержатся две подстроки, разделенные пробелом.

Выходные данные
В качестве ответа в стандартный вывод программа должна выводить 1 (если превратить можно) или 0 (если превратить нельзя).

Пример 1
Входные данные: привет прикол
Выходные данные: 1
Преобразования (выводить не нужно):
в ⇒ к (прикет)
е ⇒ о (прикот)
т ⇒ л (прикол)
import java.io.IOException;
import java.util.Scanner;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        System.out.print("");
        String str = "";
        str = scanner.nextLine();
        if (!str.matches("[а-я ]+")) {
            System.out.println(0);
            return;
        }
        str = str.trim().replaceAll(" +", " ").trim();
        System.out.println(str);
        String[] subOne = str.split(" ");

        String string = Stream.of(subOne[0].split(""))
                .map(x -> {
                    if (x.equals("в")) return "к";
                    if (x.equals("е")) return "о";
                    if (x.equals("т")) return "л";
                    return x;
                })
                .collect(Collectors.joining());

        if (string.equals(subOne[1])) System.out.println(1);
        else System.out.println(0);

    }
}
  • Вопрос задан
  • 2217 просмотров
Подписаться 2 Средний 9 комментариев
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Потому что ваш код работает только для примера входных данных. Задание предполагает, что ввести можно любые строки.
Ответ написан
@t800zippygod
По-моему тут вполне себе понятный алгоритм.
1) Одну строку в другую вы никогда не превратите, если в исходном слове у вас есть взаимозависимые буквы (то есть одинаковые), но которые во втором слове разные.
Как не меняйте их в исходном слове, они все равно останутся одинаковыми.
2) Если длина слов разная.

Вот на этой основе и накидайте алгоритм
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы