将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
输入: s = "LEETCODEISHIRING", numRows = 3
输出: "LCIRETOESIIGEDHN"
public static void zChange(String s,int n) {
String[] temp=new String[s.length()];
for(int i=0;i<n;i++)temp[i]="";
int index=0;
int dir=1;
for(char c:s.toCharArray()) {
temp[index]+=c;
index+=dir;
if(index==n-1||index==0)
dir=-dir;
}
for(int i=0;i<n;i++)System.out.print(temp[i]);
}
public static void main(String[] args) {
zChange("LEETCODEISHIRING",3);
}
采用stringbuilder
public static String convert(String s, int numRows) {
if (s==null||s.length()==0||numRows<=1) {
return s;
}
StringBuilder[] array=new StringBuilder[numRows];
for (int i = 0; i < array.length; i++) {
array[i]=new StringBuilder();
}
int dir=1;
int index=0;
for(char c:s.toCharArray()) {
array[index].append(c);
index+=dir;
if(index==0||index==numRows-1)dir=-dir;
}
StringBuilder result=new StringBuilder();
for (int i = 0; i < array.length; i++) {
result.append(array[i]);
}
return result.toString();
}
public static void main(String[] args) {
System.out.println(convert("LEETCODEISHIRING",3));
}