Объединение зигзагообразной строки в N строк

Опубликовано: 20 Сентября, 2022

Строка « PAYPALISHIRING » написана зигзагообразным узором в заданном количестве строк следующим образом: (вы можете отобразить этот узор фиксированным шрифтом для лучшей читаемости)

P        A      H      N
  A   P   L  S   I   I    G
    Y        I       R

А потом читать построчно: PAHNAPLSIIGYIR .

Следовательно, для заданной строки str и целого числа N задача состоит в том, чтобы напечатать строку, образованную путем объединения N строк, когда str записывается в виде построчного зигзага.

Пример:

Input: str = “PAYPALISHIRING”, N = 3
Output: PAHNAPLSIIGYIR

Input: str = “ABCDEFGH”, N = 2
Output: ACEGBDFH
Explanation: The input string can be written in Zig-Zag fashion in 2 rows as follows:
A   C    E   G    
   B   D   F   H
Hence, upon reading the above pattern row-wise, the output string is “ACEGBDFH”

Подход: Данная проблема представляет собой проблему, основанную на реализации, которую можно решить, выполнив следующие шаги.

  • Создайте массив из N строк, arr[N] .
  • Инициализируйте направление как «вниз» и строку как 0 . Направление указывает, движется ли текущий указатель вверх или вниз по строкам.
  • Перейдите по входной строке, выполните следующие действия для каждого символа.
    • Добавить текущий символ к строке, представляющей текущую строку.
    • Если номер строки N – 1 , измените направление на «вверх».
    • Если номер строки равен 0 , измените направление на «вниз».
    • Если направление «вниз», выполните row++. Остальное греби.
  • Одна за другой выведите все строки arr[] .

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(N)
Вспомогательное пространство: O(N)

РЕКОМЕНДУЕМЫЕ СТАТЬИ