[LeetCode-6]ZigZag字符串的变换输出
来源:互联网 发布:人生 不 快乐 知乎 编辑:程序博客网 时间:2024/06/05 04:49
在LeetCode的第六个算法问题中,要求给定行数numRows,将一个字符串转变为ZigZag字符串再逐行读出。
ZigZag字符串即由常规字符串通过Z字形排列形成。
举个例子,Mathematics在给定行数为4的情况下,其ZigZag字符串形式如下:
M a
a mt
t e i s
h c
而需要输出的是逐行读出的结果,即Maamtteishc
从实现的角度来说,比较容易想到的是使用一个二维数组以Z字形存储字符串的每一个字符,存储完之后再遍历该二维数组读出结果即可。
存储的过程从平面方向来说,Z字形存储是先向下存储,到底后再向右上方存储,到顶之后又向下存储,如此往复循环的过程。
因此在存储上可以通过二维数组的两个下标的变化来实现Z字形存储。
实现的方法如下:
public String getZigZag(String s,int numRows){if(numRows==1)return s;StringBuilder sb = new StringBuilder();char[][] matrix = new char[numRows][(s.length()+1)/2];int m=0,n=0;int mPlus = -1;int nPlus = 0;for(int i=0;i<numRows;i++){for(int j=0;j<(s.length()+1)/2;j++){matrix[i][j] = '\t';}}for(int i=0;i<s.length();i++,m+=mPlus,n+=nPlus){if(m==numRows-1){mPlus = -mPlus;nPlus = 1;}if(m==0){mPlus = -mPlus;nPlus = 0;}matrix[m][n] = s.charAt(i);}for(int i=0;i<numRows;i++){for(int j=0;j<(s.length()+1)/2;j++){if(matrix[i][j] != '\t'){sb.append(matrix[i][j]);}}}return sb.toString();}
public String getZigZag(String s,int numRows){StringBuilder[] sbs = new StringBuilder[numRows];for(int i=0;i<numRows;i++)sbs[i] = new StringBuilder();int i=0;int m=0;while(i<s.length()){for(m=0;m<numRows&&i<s.length();m++)sbs[m].append(s.charAt(i++));for(m=numRows-2;m>0&&i<s.length();m--)sbs[m].append(s.charAt(i++));}StringBuilder sb = new StringBuilder();for(int j=0;j<numRows;j++){sb.append(sbs[j].toString());}return sb.toString();}
阅读全文
0 0
- [LeetCode-6]ZigZag字符串的变换输出
- LeetCode-6 ZigZag Conversion(字符串锯齿形输出)
- [Leetcode #6]ZigZag Conversion 将字符串转换成ZigZag形式
- leetcode---zigzag-conversion---字符串
- LeetCode | 6. ZigZag Conversion(之字形变换)
- Leetcode 第6题 ZIGZAG后,行列输出
- ZigZag Conversion 把一个字符串转为zigzag的表示形式@LeetCode
- LeetCode系列字符串操作(一)ZigZag输出,寻找最大不重复字串长度。
- LeetCode 6. ZigZag Conversion--字符串按之字形放置,然后横向顺序输出
- [Leetcode 6] ZigZag问题的一种新思路
- LeetCode 6 - ZigZag Conversion
- LeetCode 6: ZigZag Conversion
- LeetCode(6)ZigZag Conversion
- Leetcode【6】:ZigZag Conversion
- [leetcode 6] ZigZag Conversion
- LeetCode 6 ZigZag Conversion
- LeetCode(6) ZigZag Conversion
- [Leetcode] 6 - ZigZag Conversion
- ARP协议【地址解析协议】
- ELK 日志分析系统(二)
- php 处理文件
- WIN10使用 NetSpeedMonitor
- Linux select服务器
- [LeetCode-6]ZigZag字符串的变换输出
- eclipse使用run on server 方法发布到tomcat时候的坑
- 一个人一件事一首歌
- std::map常见使用错误
- MyBatis 插入空值时,需要指定JdbcType
- arrow function
- 0027_Remove Element
- MFC入门操作 --- 简易计算器制作
- Linux下安装maven