leetcode 刷题 day6

📅 2026/6/17 4:30:07
leetcode 刷题 day6
**6.Z字形变换**题意将一个给定字符串 s 根据给定的行数 numRows 以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “PAYPALISHIRING” 行数为 3 时排列如下P A H NA P L S I I GY I R复制代码之后你的输出需要从左往右逐行读取产生出一个新的字符串比如“PAHNAPLSIIGYIR”。请你实现这个将字符串进行指定行数变换的函数string convert(string s, int numRows);classSolution{publicStringconvert(Strings,intnumRows){// 特殊情况处理单行或字符串长度小于行数时不需要转换if(numRows1||numRowss.length()){returns;}// 初始化 StringBuilder 数组每个 StringBuilder 对象代表一行StringBuilder[]rowsnewStringBuilder[numRows];for(inti0;inumRows;i){rows[i]newStringBuilder();}intcurRow0;// 当前行booleandownfalse;// 方向标志用于控制行的移动// 遍历字符串中的每个字符for(charc:s.toCharArray()){// 将字符添加到当前行rows[curRow].append(c);// 当达到 Zigzag 的顶部或底部时改变方向if(curRow0||curRownumRows-1){down!down;}// 根据方向更新当前行curRowdown?1:-1;}// 合并所有行构建最终的字符串StringBuilderresultnewStringBuilder();for(StringBuilderrow:rows){result.append(row);}returnresult.toString();}}