6.LeetCode 字符串z字形排列
这道题的难点就是对周期的把握
我们只要找到周期的对应规律就行了
盗个图
这个图 要注意一点 是个五行图 不是四行
一个周期是八个点
所以周期和行的比例就是
int cycleLen = 2 * numRows -2;
除去第一行和最后一行外
别的行每个周期都是两行 也就是两个点
第一个点是 行号 第二个点就是周期 减去行号所以
ret.append(s.charAt(j + i));
//字符串长度 if (i != 0 && i != numRows - 1 && j + cycleLen - i < n) //除去第 0 ⾏和最后⼀ ret.append(s.charAt(j + cycleLen - i));
然后组合一下
public static String convert(String s, int numRows) { StringBuilder ret = new StringBuilder(); int n = s.length(); int cycleLen = 2 * numRows -2; for (int i = 0; i < numRows; i++) { for (int j = 0; j +i< n; j+=cycleLen) { ret.append(s.charAt(j + i)); if (i != 0 && i != numRows - 1 && j + cycleLen - i < n) ret.append(s.charAt(j + cycleLen - i)); } } return ret.toString(); }

浙公网安备 33010602011771号