import java.util.ArrayList;
import java.util.List;
public class ZConvert {
public static void main(String[] args) {
String res = convert("LEETCODEISHIRING",3);
System.out.println(res);
}
/*
Z 字变形,只需要从左到右扫描字符串,查看每个字符应该放在哪一行
*/
public static String convert(String s,int numRows){
List<StringBuilder> rows = new ArrayList<>();
int min = Math.min(numRows,s.length());
//每行初始化,放一个StringBuilder
for(int i = 0; i < min; i++){
rows.add(new StringBuilder());
}
//从左到右扫描s
boolean dir = false;//当 i = 0 时,向下走,当i = numRows - 1 时,向上走
int i = 0;
for(char c : s.toCharArray()){
rows.get(i).append(c);
if(i == 0 || i == numRows - 1){
dir = !dir;//改变方向
}
//向下时,行+1,向上时,行-1
i += dir? 1 : -1;
}
StringBuilder sb = new StringBuilder();
for (StringBuilder row : rows) {
sb.append(row);
}
return sb.toString();
}
}
Z字变形的JAVA代码
最新推荐文章于 2023-02-20 21:39:14 发布