P13 Z字形变换,难度中等。
题目
English
1 | The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility) |
中文
1 | 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 |
解题
伪代码描述(推荐)
分析及源码
图形其实是有周期的,0,1,2 … 7 共8 个,周期的计算就是 cycleLen = 2 × numRows - 2 = 2 × 5 - 2 = 8 个。
我们发现第 0 行和最后一行一个周期内有一个字符,所以第一个字符下标是 0 ,第二个字符下标是 0 + cycleLen = 8,第三个字符下标是 8 + cycleLen = 16 。
其他行都是两个字符,
第 1 个字符和第 0 行的规律是一样的。
第 2 个字符下标其实就是下一个周期的第 0 行的下标减去当前行。
java代码:
1 | class Solution { |
执行结果:
1 | 执行用时 :4 ms, 在所有 java 提交中击败了94.73%的用户 |
本文作者:
Yao Zhu
发布时间: 2019-12-21
最后更新: 2019-12-30
本文链接: https://juoyo.github.io/posts/a6adf557.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
发布时间: 2019-12-21
最后更新: 2019-12-30
本文链接: https://juoyo.github.io/posts/a6adf557.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!