将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 "LEETCODEISHIRING"
行数为 3 时,排列如下:
"LCIRETOESIIGEDHN"
。
请你实现这个将字符串进行指定行数变换的函数:
string convert(string s, int numRows);
示例 1:
输入: s = "LEETCODEISHIRING"
, numRows = 3
输出: "LCIRETOESIIGEDHN"
示例 2:
输入: s = "LEETCODEISHIRING"
, numRows = 4
输出: "LDREOEIIECIHNTSG"
解释:
class Solution {
public String convert(String s, int numRows) {
if( numRows == 1 ) return s;
StringBuilder[] sb = new StringBuilder[numRows];
for( int i = 0; i < numRows; i++ )
sb[i] = new StringBuilder();
for( int i = 0; i < s.length(); i++ ){
int mod = i % ( 2 * numRows - 2 );
if( mod <= numRows - 1 )
sb[mod].append( s.charAt(i) );
else
sb[2 * numRows - mod - 2].append( s.charAt(i) );
}
StringBuilder res = new StringBuilder();
for( int i = 0; i < numRows; i++ )
res.append( sb[i] );
return res.toString();
}
}
网友评论