5321. Зигзагообразная запись
Medium
2 решили
Дана строка
Ручка ходит так:
s и число линеек numRows. Буквы нужно записать зигзагом на этих линейках, а потом вернуть одну строку — то, что получится, если прочитать тетрадку построчно слева направо.Ручка ходит так:
- сначала вниз по столбцу: с верхней линейки на нижнюю;
- дойдя до низа — по диагонали вверх-вправо, пока снова не окажетесь наверху;
- снова вниз, снова по диагонали — пока буквы не кончатся.
s = ABCDEFGHIJ, numRows = 3 порядок записи (номер = какая буква по счёту): 1 5 9 2 4 6 8 10 3 7 вниз: 1→2→3, диагональ вверх: 4, вниз: 5→6→7, диагональ: 8, вниз: 9→10. те же клетки, но буквами: A E I B D F H J C G читаем линейки сверху вниз: 1-я: A E I 2-я: B D F H J 3-я: C G ответ: AEIBDFHJCGТо же правило на четырёх линейках:
s = ZEDCODEISGREAT, numRows = 4 Z E A E D I E T D O S R C G линейки: ZEA + EDIET + DOSR + CG ответ: ZEAEDIETDOSRCGЕсли
numRows = 1 или линеек не меньше, чем букв, ходить некуда — верните s как есть.Примеры:
Вход:
{"s": "ABCDEFGHIJ", "numRows": 3}
Выход:
AEIBDFHJCG
Объяснение: Три линейки. Верхняя: A, E, I. Средняя (столбцы и диагонали): B, D, F, H, J. Нижняя: C, G. Склеиваем → AEIBDFHJCG.
Вход:
{"s": "ZEDCODEISGREAT", "numRows": 4}
Выход:
ZEAEDIETDOSRCG
Объяснение: Четыре линейки. Сверху вниз: ZEA, затем EDIET, затем DOSR, затем CG. Склеиваем → ZEAEDIETDOSRCG.
Вход:
{"s": "ABC", "numRows": 2}
Выход:
ACB
Объяснение: Две линейки: A вниз на B, по диагонали вверх на C. Верх: A, C. Низ: B. Склеиваем → ACB.
Вход:
{"s": "A", "numRows": 1}
Выход:
A
Объяснение: Одна буква и одна линейка — ходить некуда, строка не меняется → A.
Ограничения:
1 <= s.length <= 1000
1 <= numRows <= 1000
s состоит из английских букв
Решите эту задачу в браузере
Создайте бесплатный аккаунт — редактор Python, Java, JavaScript и Go, проверка на тестах за секунды.
Комментарии (0)
Зарегистрируйтесь или войдите, чтобы оставить комментарий
Пока нет комментариев. Будьте первым!