Строка « 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++. Остальное греби.