题目:之字形字符串转换
思路:由于是之字形走法,可以创建一个长度为numRows的字符串数组,对原字符串中每个字符依次加到每个字符串后面,要注意的是先写卫语句,将numRows大于字符串长度和numRows为1的情况排除,然后写接下去的算法,同时要注意开辟新数组,每个字符串都会先赋null,因此要将这种情况排除掉,附上源码:
public class Solution {
public String convert(String s, int numRows) {
if (s.length() <= numRows || numRows == 1){
return s;
}
String[] str = new String[numRows];
for (int i = 0;i < s.length();i++){
int offset = i % (numRows - 1);
if (i / (numRows - 1) % 2 == 0){
if (str[offset] == null){
str[offset] = String.valueOf(s.charAt(i));
}else{
str[offset] += s.charAt(i);
}
}else {
if (str[numRows - 1 - offset] == null){
str[numRows - 1 - offset] = String.valueOf(s.charAt(i));
}else{
str[numRows - 1 - offset] += s.charAt(i);
}
}
}
StringBuffer buffer = new StringBuffer();
for (int i = 0;i < numRows;i++){
buffer.append(str[i]);
}
return buffer.toString();
}
}