java 实现Leetcode ZigZag Conversion问题
这篇文章实现leetcode 里面的ZigZag Conversion问题
题目点击这里
ZigZag Conversion问题解决的方法其实还是很简单的,这道题目也是相对而言比较简单的题目,结题思路:
就是用一个二维数组来装载给定字符串,遍历字符串,将字符依次放置在二位数组对于的位置上。
话不多少,看代码:
if (numRows <= 1 || s.length() <= numRows) {
return s;
}
int plus = s.length() / (2 * numRows - 2);
int rowLength = (plus + 1) * (numRows - 1);
char[][] collectionArray = new char[numRows][rowLength];
int i = 0, j = 0;
i = 0;
j = 0;
boolean sign = false;
for (int k = 0; k < s.length(); ++k) {
collectionArray[i][j] = s.charAt(k);
if (i == 0) {
sign = false;
} else if (i == numRows - 1) {
sign = true;
}
if (i < numRows - 1 && !sign) {
i++;
} else {
i--;
j++;
}
}
StringBuilder result = new StringBuilder();
for (i = 0; i < numRows; ++i) {
for (j = 0; j < rowLength; ++j) {
if (collectionArray[i][j] != 0) {
result.append(collectionArray[i][j]);
}
}
}
System.out.println("result == "
+ Integer.valueOf(collectionArray[0][1]));
return result.toString().trim();
整个解法还是比较简单的,但是在这里我发现一个比较有意思的问题,就是java 虚拟机给字符数组赋的初值是多少?下一篇文章稍微讲解一下关于虚拟机赋初值的问题!