怎么做网站图片做的更好看,湖北工程建设招投标中心网站,昆山专业简历制作网站,wordpress公式 插件6. Z 字形变换
将一个给定字符串 s 根据给定的行数 numRows #xff0c;以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 “PAYPALISHIRING” 行数为 3 时#xff0c;排列如下#xff1a;
P A H N
A P L S I I G
Y I R之后#xff0c;你的输出需要从…6. Z 字形变换
将一个给定字符串 s 根据给定的行数 numRows 以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 “PAYPALISHIRING” 行数为 3 时排列如下
P A H N
A P L S I I G
Y I R之后你的输出需要从左往右逐行读取产生出一个新的字符串比如“PAHNAPLSIIGYIR”。
请你实现这个将字符串进行指定行数变换的函数
string convert(string s, int numRows);
示例 1
输入s PAYPALISHIRING, numRows 3
输出PAHNAPLSIIGYIR
示例 2
输入s PAYPALISHIRING, numRows 4
输出PINALSIGYAHRPI
解释
P I N
A L S I G
Y A H R
P I
示例 3输入s A, numRows 1
输出A
解题思路
我们维护一个stringBuilder数组记录下每一行里面的元素
因为z型遍历存在一个规律字母所放置的行号先是增加到达边界以后会减少如此循环往复
代码
class Solution {public String convert(String s, int numRows) {if(numRows1) return s;StringBuilder[] sbnew StringBuilder[numRows];for(int i0;inumRows;i)sb[i]new StringBuilder();int row0,k0;boolean downtrue;while(ks.length()){if(row0){downtrue;}else if(rownumRows-1){downfalse;}sb[row].append(s.charAt(k));rowdown?row1:row-1;}for(int i1;inumRows;i)sb[0].append(sb[i]);return sb[0].toString();}
}