Leetcode006:ZigZag Conversion的Java解法
来源:互联网 发布:unity3d流血特效 编辑:程序博客网 时间:2024/06/16 14:51
题目:The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)
P A H NA P L S I I GY I R
And then read line by line: “PAHNAPLSIIGYIR”
Write the code that will take a string and make this conversion given a number of rows:string convert(string text, int nRows);
convert(“PAYPALISHIRING”, 3) should return “PAHNAPLSIIGYIR”.
原题链接: http://oj.leetcode.com/problems/zigzag-conversion/
思路:
附上一张比较清晰的ZigZag的遍历顺序:
numRows为总行数,i为所在行数。由图可知,每行最左和最右两个数值之差为2(numRows-1)。除了第一行和最后一行,中间行的中间元素到该行下一个元素的差值为2*i。因此中间元素到最左边元素的差值为2(numRows-1)-2i。
注:
- 边界条件:当字符串为空或是字符串长度小于行数。
- 使用了Java的StringBuilder类,是可变字符序列。
下面附上已经submit的代码:
public class Solution{ public String convert(String s,int numRows){ //考虑边界情况 if (s == null || s.isEmpty()) { return s; } int length = s.length(); if(length <= numRows || numRows == 1 ) { return s; } //StringBuilder是可变字符序列 StringBuilder res = new StringBuilder(); int step = 2 * (numRows - 1); for(int i = 0;i < numRows;i++) { int interval = step - 2*i; for(int j=i;j<length;j+=step) { res.append(s.charAt(j)); //除了第一行和最后一行 if(i!=0 && i!= numRows - 1) { int temp = j + step - 2i; if(temp<s.length)) //append方法始终将这些字符添加到缓冲区的末端; res.append(s.charAt(temp)); } } } return res.toString(); }}
0 0
- Leetcode006:ZigZag Conversion的Java解法
- leetcode006:ZigZag Conversion
- leetcode006 ZigZag Conversion
- Leetcode006-ZigZag Conversion
- LeetCode006 ZigZag Conversion
- ZigZag Conversion 解法
- [LeetCode][6]ZigZag Conversion解析与特殊解法 -Java实现
- ZigZag Conversion题目及解法
- 【LeetCode006算法/编程练习C++】ZigZag Conversion //折形string重新排序
- [Leetcode] ZigZag Conversion (Java)
- ZigZag Conversion (Java)
- [Java]leetcode6 ZigZag Conversion
- [LeetCode][Java] ZigZag Conversion
- ZigZag Conversion(java)
- 【leetcode】ZigZag Conversion【java】
- LeetCode : ZigZag Conversion [java]
- ZigZag Conversion(java)
- 6. ZigZag Conversion(JAVA)
- maskView
- POJ 2728 最优比率生成树
- iOS六种传值方式之通知传值
- 《图解番茄工作法》读后感
- 2017校招信息每日汇总(更新至8.4)
- Leetcode006:ZigZag Conversion的Java解法
- 树节点监听节点改变Demo
- AVL树总结
- HDU 5795 A Simple Nim
- RT3070无线网卡STA模式
- HDU 1874 畅通工程续
- 复制构造函数
- Python带index的list输出
- caffe+cuda6.5+cudnn7.0+opencv3.0搭建经验记录