Leetcode 6. ZigZag Conversion
题目描述:之字打印出字符串,并返回结果。
题目链接:Leetcode 6. ZigZag Conversion
思路就是初始化n行字符串,然后像搜索一样一个上一个下去搜索。
代码如下
class Solution(object):
def convert(self, s, numRows):
"""
:type s: str
:type numRows: int
:rtype: str
"""
if numRows == 1 or numRows >= len(s):
return s
L = [''] * numRows
index, step = 0, 1
for x in s:
L[index] += x
if index == 0:
step = 1
elif index == numRows -1:
step = -1
index += step
return ''.join(L)
class Solution {
public String convert(String s, int numRows) {
if (numRows == 1 || s.length() <= numRows) {
return s;
}
StringBuffer[] ans = new StringBuffer[numRows]; // 初始化n行 然后随着之字走来添加
int index = 0, step = 1;
char[] chars = s.toCharArray();
for (char c : chars) {
if (ans[index] == null) {
ans[index] = new StringBuffer();
}
ans[index].append(c);
if (index == 0) {
step = 1;
} else if (index == (numRows - 1)) {
step = -1;
}
index += step;
}
StringBuffer sb = new StringBuffer();
for (StringBuffer rs : ans) {
sb.append(rs);
}
return sb.toString();
}
}