将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
最重要的是两个转折点,在不断变化行的过程中给以此给每一行添加元素。当在首行时:接下来就是行就应该给未行走,行需要+;当在未行是则相反给首行走,行需要-

class Solution {
public String convert(String s, int numRows) {
if(numRows < 2) return s;
List<StringBuilder> rows = new ArrayList<StringBuilder>();
for(int i = 0; i < numRows; i++)
rows.add(new StringBuilder());
int i = 0; //代表行,此处代表起始行
int flag = -1; //用于转换
for(char c : s.toCharArray()) {
rows.get(i).append(c);
if(i==0||i==numRows-1)
flag = -flag;
i += flag;
}
StringBuilder res = new StringBuilder();
for(StringBuilder row:rows)
res.append(row);
return res.toString();
}
}
本文介绍了一种将字符串以Z字形排列的算法实现,通过动态调整行进方向,将字符逐个分配到不同行,最终合并为一个字符串。算法关键在于处理行的转折点,确保字符正确分布。
275

被折叠的 条评论
为什么被折叠?



