个人题解:
发现存在周期性的规律;
周期的第一列为全部填写;
其余行只填写一个字符;
根据此进行编写程序;
注意除0错误;
class Solution {
public String convert(String s, int numRows) {
int str_place = 0;//字符串中字符的位置
int flag = 0;//标识符,0表示偶数列,1表示奇数列
List<List<Character>> char_list = new ArrayList<>();
for (int i = 0; i < numRows; i++) {
char_list.add(new ArrayList<Character>());
}
//现在已经建立好表结构
for (int i = 0; i < s.length(); ) {
//发现周期性规律,周期为numRows -1 ,做除余操作,
// 余数为0,每行加入,
// 余数为1,在第numRows -1-1
// 余数为i,在第numbows -1 - i 行加入一个字符(i!=0)
int remainder = 0;
if (numRows!=1){
remainder = i %(numRows - 1);
}
if (remainder == 0){
for(int j = 0;j<numRows;j++){
char_list.get(j).add(s.charAt(i));
i++;
if(i==s.length()){
break;
}
}
}
else{
char_list.get(numRows-1-remainder).add(s.charAt(i));
i++;
}
}
StringBuilder result_str = new StringBuilder();
for (int i = 0;i<numRows;i++){
for (Character char_s: char_list.get(i)) {
result_str.append(char_s);
}
}
return result_str.toString();
}
}