6. ZigZag Conversion - LeetCode
Posted okokabcd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6. ZigZag Conversion - LeetCode相关的知识,希望对你有一定的参考价值。
Question
Solution
题目大意:将字符串按Z字型排列,然后再一行一行按字符输出
思路:按题目中的第一个例子,画出如下图,通过n的不同值,可以找出规律红线的长度是2*n-2,蓝线的长度是interval - row,这样根据已知参数知道有n行,所以遍历n行,每行有多少列呢,每一列最后一列必须小于s.length,这样就可以通过遍历来求出最终结果了。
Java实现:
public String convert(String s, int n) {
if (n == 1 || n >= s.length()) return s;
StringBuilder sb = new StringBuilder();
int interval = 2 * n - 2;
for (int row = 0; row < n; row++) {
int step = interval - 2 * row;
for (int col = row; col < s.length(); col += interval) {
sb.append(s.charAt(col));
if (step > 0 && step < interval && (col + step) < s.length()) {
sb.append(s.charAt(col + step));
}
}
}
return sb.toString();
}
Ref
思路参考了这个视频:https://www.youtube.com/watch?v=7UQ71uwQFx4
以上是关于6. ZigZag Conversion - LeetCode的主要内容,如果未能解决你的问题,请参考以下文章