https://leetcode.com/problems/zigzag-conversion/#/description
思路解析:
输入:一个字符串和行数
首先将string转换为字符数组使用toCharArray()
所以每一行用一个StringBuilder对象来保存,因为可以更改其值。
主要确定好两个方向的位置,竖向和倾斜。只需要控制好sb的下标即可。
注意:
在控制sb下标的同时也一定要控制字符数组的下标,防止越界。
代码如下:
public class Solution {
public String convert(String s, int numRows) {
char[] c=s.toCharArray();
StringBuilder[] sb=new StringBuilder[numRows];
for(int i=0;i<numRows;i++)
{
sb[i]=new StringBuilder();
}
int k=0;
while(k<s.length())
{
for(int i=0;i<numRows && k<s.length();i++)
{
sb[i].append(c[k++]);
}
for(int i=numRows-2;i>=1 && k<s.length();i--)
{
sb[i].append(c[k++]);
}
}
StringBuilder result=new StringBuilder();
for(int i=0;i<numRows;i++)
{
result.append(sb[i]);
}
return result.toString();
}
}