✨✨hello,愿意点进来的小伙伴们,你们好呐!
🐻🐻系列专栏:【力扣刷题篇】
🐲🐲本篇内容: 每日刷题
🐯🐯作者简介:一名现大二的三非编程小白,日复一日,仍需努力。
Z字形变换
链接: Z字形变换
题意:
通过该题我们可以得出:
我们需要将一个字符串从上往下,从左往右的方向进行Z字形排列,然后我们需要将该字符串重新排列 。
将其按照以每行依次存进字符串,并输出。
思路:
我们可以使用StringBuffer来拼接字符串,那么每一行就需要用一个StringBuffer来进行字符串拼接。
那么我们可以使用ArrayList集合来存储StringBuffer。
然后最重要的就是遍历Z字形进行StringBuffer进行字符串拼接。
重点就是我们要如何进行遍历Z字形呢。
可以使用一个flag变量来实现。
接下来我们来看看代码是2如何实现的》
Java代码实现:
class Solution {
public String convert(String s, int numRows) {
//当数组行数为1或者小于1时,
if(numRows <= 1){
return s;
}
List<StringBuffer> list = new ArrayList();
//在ArrayList中存入跟行数相同的StringBuffer,用来存入每一行的元素
for(int j = 0; j < numRows; j++){
list.add(new StringBuffer());
}
//来记录每一行数
int i = 0;
//来改变行数遍历的方向
int flag = -1;
//将字符串转成字符数组来进行遍历
for(char ch : s.toCharArray()){
list.get(i).append(ch);//取出元素存入每一行的StringBUffer中
if(i == 0 || i == numRows - 1){
//如果是第一行或者最后一行,flag就要转化符号,来进行z字形遍历
flag = -flag;
}
i += flag;
}
StringBuffer buffer = new StringBuffer();
for(StringBuffer sb : list){
buffer.append(sb);
}
return buffer.toString();
}
}