Leetcode6--->Zigzag Conversion(将给定字符串按照Z字排列,输出结果)
题目:给定一个字符串s,一个整数numRows, 将字符串s按照竖Z的方式排列,然后输出结果;
举例:String s = "PAYPALISHIRING";
排列后为:
P A H N
A P L S I I G
Y I R
String convert(String s, int 3) 结果为"PAHNAPLSIIGYIR"
解题思路:
1. 由于每一行到底有多少个字母是不确定的,因此每行使用ArrayList来保存字母;如5,6,7行代码所示;
2. 遍历字符串:分为三个部分:第一部分(第13行代码)循环,即从上往下走;第二部分条件判断(第18行代码),判断从上往下走是否已经到达最下层,若到达,下一步应该往上走,因此ArrayList的标号应该减2;第三部分循环(第21行代码),是从下往上走;
3. 遍历结束时,list[0]中保存的是第一行的字符串,list[1] 中保存的是第二行字符串,以此类推......
代码如下:
public class Solution {
public String convert(String s, int numRows) {
if(s == null || s.length() < 1 || numRows <= 1)
return s;
List<List> list = new ArrayList<List>();
for(int i = 0; i < numRows; i++){
list.add(new ArrayList<Character>());
}
int index = 0; // 判断是第几个ArrayList,即是第几行
int i = 0;
int len = s.length();
while(i < len) {
while(index < numRows && i < len){
list.get(index).add(s.charAt(i));
index ++;
i++;
}
if(index == numRows){
index -= 2;
}
while(index > 0 && i < len){
list.get(index).add(s.charAt(i));
i++;
index --;
}
}
StringBuffer sb = new StringBuffer();
for(int j =0; j < list.size(); j++){
for(int k = 0; k < list.get(j).size(); k++){
sb.append(list.get(j).get(k));
}
}
return sb.toString();
}
}
Leetcode6--->Zigzag Conversion(将给定字符串按照Z字排列,输出结果)的更多相关文章
- LeetCode ZigZag Conversion(将字符串排成z字型)
class Solution { public: string convert(string s, int nRows) { string a=""; int len=s.leng ...
- LeetCode OJ:ZigZag Conversion(字符串的Z字型转换)
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- leetcode6:Zigzag Conversion@Python
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- LeetCode6 ZigZag Conversion
题意: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows l ...
- 【LeetCode】ZigZag Conversion(Z 字形变换)
这道题是LeetCode里的第6道题. 题目要求: 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" ...
- 6. ZigZag Conversion - LeetCode
Question 6. ZigZag Conversion Solution 题目大意:将字符串按Z字型排列,然后再一行一行按字符输出 思路:按题目中的第一个例子,画出如下图,通过n的不同值,可以找出 ...
- LeetCode题解——ZigZag Conversion
题目: 把一个字符串按照Z型排列后打印出来,例如 "PAYPALISHIRING" 重新排列后为3行,即 P A H N A P L S I I G Y I R 那么输出为&quo ...
- [Swift]LeetCode6. Z字形变换 | ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- 字符串按照Z旋转90度然后上下翻转的字形按行输出字符串--ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
随机推荐
- ftp错误
ftp 550 检查是否目录,文件确定存在. 服务器列表是要设置unix列表模式.
- 【虚拟机-部署】通过 Powershell 来调整 ARM 模式下虚拟机的尺寸
需求描述 在部署完 ARM 模式的虚拟机以后,可以通过 PowerShell 命令来调整虚拟机的尺寸,以下是通过 PowerShell 命令来调整 ARM 模式的虚拟机尺寸. Note 本文只限于 A ...
- python+selenium之处理HTML5的视频播放
from selenium import webdriver from time import sleep driver = webdriver.Firefox() driver.get(" ...
- selenium-Python之上传文件
对于web 页面的上传功能实现一般有一下两种方式 普通上传:普通的附件上传是将本地文件的路径作为一个值放在input标签中,通过form表单将这个值提交给服务器 插件上传:一般是指基于flash.ja ...
- LINQ新添知识
linquser.ExecuteCommand("TRUNCATE TABLE Board"); linquser.ExecuteCommand("DELET ...
- 【UML】部署图Deployment diagram(实现图)(转)
http://blog.csdn.net/sds15732622190/article/details/49049665 前言 下面要介绍UML中的部署图,和构件图一样,它也属于实现图的一种,五种静态 ...
- HTML5新增的音频标签、视频标签
我们所说的H5就是我们所说的HTML5中新增的语言标准 一.音频标签 在HTML5当中有一个叫做audio的标签,可以直接引入一段音频资源放到我们的网页当中 格式: <audio autopla ...
- 绘制方式和OpenGL枚举对应关系
绘制方式和OpenGL枚举对应关系 图元类型 OpenGL枚举量 点 GL_POINTS 线 GL_LINES 条带线 GL_LINE_STRIP 循环线 GL_LINE_LOOP 独立三角形 GL_ ...
- IDEA设置每次打开重新选择项目
通过这里,选择settings,或者进入之后的FILE->settings.搜索System 即可出现
- cocos2dx观察者模式EventListenerCustom的使用(代替NotificationCenter)
在cocos2dx 3.x版本已经被弃用,改用EventDispatcher代替. 观察者模式是MVC模式的一种,一个model可以对应很多个观察者view,当model收到事件通知时,对应的view ...