@alex__777

В чем ошибка в моей реализации задания?

Условие задачи

Ограничение времени, с 1
Ограничение памяти, МБ 64
Общее число попыток отправки 15

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

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

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

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

Пример 1
Входные данные: привет прикол
Выходные данные: 1
Преобразования (выводить не нужно):
в ⇒ к (прикет)
е ⇒ о (прикот)
т ⇒ л (прикол)

Пример 2
Входные данные: ааббдд ддббаа
Выходные данные: 1
Преобразования (выводить не нужно):
д ⇒ я (ааббяя)
а ⇒ д (ддббяя)
я ⇒ а (ддббаа)

Пример 3
Входные данные: абаб ааах
Выходные данные: 0
Преобразовать нельзя, так как 'б' не сможет оказаться одновременно 'а' и 'х'.

Вот моя реализация этого задания. У меня во всех тестах все работает. И в тестах которые я придумываю тоже. Но когда я отправляю решение, то говорят что не правильно. Очень надеюсь на вашу помощь.

data = input()
arr_data = data.split(' ')
string1 = arr_data[0]
string2 = arr_data[1]
str_arr = list(string1)
result_str = ''
length = len(string1)
result = 0
changed_letters = {}

if length == len(string2):
    for number in range(length):
        if string1[number] != string2[number]:
            if string1[number] not in changed_letters:
                changed_letters[string1[number]] = string2[number]
    
    if len(changed_letters) >= 1:
        for number in range(length):
            if str_arr[number] in changed_letters:
                str_arr[number] = changed_letters[str_arr[number]]
               
    result_str = result_str.join(str_arr)
    
    if result_str == string2:
        result = 1
        
print(result)
  • Вопрос задан
  • 260 просмотров
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos
Как сделать тестовое задание?

Самостоятельно
Ответ написан
Bavashi
@Bavashi
Ваше решение должно учитывать вариант, когда на вход поданы строки разной длины.

У вас работает только если строки одинаковой длины:
if length == len(string2):

Update: не выполняются эти условия:

- участвуют только буквы русского алфавита а-я;
- все буквы в нижнем регистре;
Ответ написан
@U235U235
Как минимум Вы не учитываете что если в аналоге Примера 2 будут все буквы алфавита, то замена будет невозможна, т.к. невозможно будет использовать временную переменную (как буква я в Примере 2).
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы