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 состоит из английских букв

Теги:

Строки Симуляция

Комментарии (0)

Зарегистрируйтесь или войдите, чтобы оставить комментарий

Пока нет комментариев. Будьте первым!