помощь в решении задачи

Палиндром – это строка, которая одинаково читается как слева направо, так и справа налево.

Дан набор из n строк (1 ≤ n ≤ 105). Найдите среди них такие пары, которые при конкатенации дают палиндром. Более формально, найдите все пары (i, j) такие, что i ≠ j и строка si+sj является палиндромом.

Выведите все упорядоченные пары индексов (нумерация с единицы).

Формат ввода В первой строке дано целое число n (1 ≤ n ≤ 100 000) — количество строк.

Далее в n строках записано по одному слову. Длина каждого слова от 1 до 10. Слова состоят из маленьких букв английского алфавита.

Пример 1.

Ввод:

4

a

abbaa

bba

abb

Вывод:

1 2

1 3

2 3

3 4

4 1

4 3

Как вычислять палиндром мне ясно, а как ввод данных выполнить в питоне? Не знаю, как правильно начать?

Может подскажет кто?


Ответы (1 шт):

Автор решения: ArseniyRybasov

Так пойдёт?

n = int(input()) # количество строк, которое будет введено
strokes = [] # все введённые строки
match = [] # все совпадения

for i in range(n):
    stroke = input() # строка
    strokes.append(stroke)

for i in range(n):
    for j in range(i + 1):
        if i != j:
            concat = strokes[i] + strokes[j]
            if concat == concat[::-1]:
                match.append([i+1, j+1])

for i in range(len(match)):
    print(match[i][0], match[i][1], sep = ", ")
→ Ссылка