博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode--006--Z字型变换(java)
阅读量:5283 次
发布时间:2019-06-14

本文共 1228 字,大约阅读时间需要 4 分钟。

将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:

L   C   I   RE T O E S I I GE   D   H   N

之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"

请你实现这个将字符串进行指定行数变换的函数:

string convert(string s, int numRows);

示例 1:

输入: s = "LEETCODEISHIRING", numRows = 3输出: "LCIRETOESIIGEDHN"

示例 2:输入: s = "LEETCODEISHIRING", numRows = 4 输出: "LDREOEIIECIHNTSG" 解释: 

L     D     RE   O E   I IE C   I H   NT     S     G 分析: 竖着看,看每个字符属于第几行,每一行为一个string,最后把每一行都连接起来。行索引index和总行数的关系为index = i %(2 * rowNums - 2), 当index小于总行数,index不变,否则index = 2 * rowNums - 2 - index,比如第二列的c,index = 2 * 4 - 2 - 4 = 2;
1 class Solution { 2     public String convert(String s, int numRows) { 3         if(numRows<=1)return s; 4         StringBuilder[] sb = new StringBuilder[numRows]; 5         for(int i = 0;i < sb.length;i++){ 6             sb[i] = new StringBuilder(""); 7         } 8         for(int i = 0;i 
< numRows ? index : 2*numRows - 2 - index;11 sb[index].append(s.charAt(i));12 }13 for(int i = 1;i < sb.length;i++){14 sb[0].append(sb[i]);15 }16 return sb[0].toString();17 }18 }

 2019-03-13 22:52:42

转载于:https://www.cnblogs.com/NPC-assange/p/10527217.html

你可能感兴趣的文章
2019年春季学期第四周作业
查看>>
rotate the clock
查看>>
Python并发编程04/多线程
查看>>
CF461B Appleman and Tree
查看>>
CF1215E Marbles
查看>>
BZOJ2339 HNOI2011卡农(动态规划+组合数学)
查看>>
octave基本操作
查看>>
axure学习点
查看>>
WPF文本框只允许输入数字[转]
查看>>
dom4j 通用解析器,解析成List<Map<String,Object>>
查看>>
第一个项目--用bootstrap实现美工设计的首页
查看>>
使用XML传递数据
查看>>
TYVJ.1864.[Poetize I]守卫者的挑战(概率DP)
查看>>
0925 韩顺平java视频
查看>>
iOS-程序启动原理和UIApplication
查看>>
mysql 8.0 zip包安装
查看>>
awk 统计
查看>>
模板设计模式的应用
查看>>
实训第五天
查看>>
平台维护流程
查看>>