概述
题目描述
将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数:(下面这样的形状)
P
A
H
N
A P L S I I G
Y
I
R
之后按逐行顺序依次排列:"PAHNAPLSIIGYIR"
实现一个将字符串进行指定行数的转换的函数:
string convert(string text, int nRows);
convert("PAYPALISHIRING", 3) 应当返回 "PAHNAPLSIIGYIR" 。
解题分析和解答
1.根据输入的字符串和行数,计算出最大的列数。
2.根据行数和列数据,创建一个一维数组;
3.计算字符串中每个字符在数组中的位置;
4.最后输出,一维数组中的有效字符;
public String convert2(String s, int nRows) {
char[] c = s.toCharArray();
int len = c.length;
StringBuffer[] sb = new StringBuffer[nRows];
//存储每一行的值
for (int i = 0; i < sb.length; i++) {
sb[i] = new StringBuffer();
}
int i = 0;
while (i < len) {
for (int idx = 0; idx < nRows && i < len; idx++) // vertically down
sb[idx].append(c[i++]);
for (int idx = nRows-2; idx >= 1 && i < len; idx--) // obliquely up
sb[idx].append(c[i++]);
}
for (int idx = 1; idx < sb.length; idx++)
sb[0].append(sb[idx]);
return sb[0].toString();
}
最后
以上就是无心学姐为你收集整理的6.Z字形转换(ZigZag Conversion)题目描述解题分析和解答的全部内容,希望文章能够帮你解决6.Z字形转换(ZigZag Conversion)题目描述解题分析和解答所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复