LeetcodeZigZag Conversion
Posted wuezs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetcodeZigZag Conversion相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode.com/problems/zigzag-conversion/
题目:
The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)
P A H N
A P L S I I G
Y I R
And then read line by line: “PAHNAPLSIIGYIR”
Write the code that will take a string and make this conversion given a number of rows:
string convert(string text, int nRows);
convert(“PAYPALISHIRING”, 3) should return “PAHNAPLSIIGYIR”.
思路:
将字符按Zig形填入map中,然后遍历map数组得到结果
算法:
public String convert(String s, int numRows) {
char map[][] = new char[numRows][s.length()/(numRows-1)+1];
int k = 0;// 第几列
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[0].length; j++) {
map[i][j]=‘ ‘;
}
}
for (int i = 0; i < s.length();) {
for (int j = 0; j < numRows && i < s.length(); j++, i++) {
map[j][k] = s.charAt(i);
}
k++;
for (int j = numRows - 2; j >= 1 && i < s.length(); j--, i++, k++) {
map[j][k] = s.charAt(i);
}
}
StringBuffer res = new StringBuffer();
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[0].length; j++) {
if (map[i][j]!=‘ ‘) {
res.append(map[i][j]);
}
}
}
return res.toString();
}
以上是关于LeetcodeZigZag Conversion的主要内容,如果未能解决你的问题,请参考以下文章