编程语言:Java
题目链接:https://leetcode-cn.com/problems/zigzag-conversion/description/
题解:大体思路为直接根据输出格式进行一行一行的输出,但是要分情况:①第一行和最后一行一直加同一个数即可,这个数的值显而易见;②中间行,时而加多一点,时而加少一点,故需要记录状态,以便确定下一个位移的步数。
难度:Medium
结果:
class Solution {
public String convert(String s, int numRows) {
int len = s.length();
if (numRows == 1)
return s;
else {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < numRows; i++) {
boolean flag = false;
for (int j = i; j < len;) {
sb.append(s.charAt(j));
if(i!=0&&i!=numRows-1){
if (!flag) {
j += 2 * (numRows - i - 1);
} else {
j += 2 * i;
}
flag = !flag;
}else if(i==0){
j += 2 * (numRows - i - 1);
}else{
j += 2 * i;
}
}
}
return sb.toString();
}
}
}