LeetCode(60)-ZigZag Conversion
来源:互联网 发布:ubuntu安装pychom 编辑:程序博客网 时间:2024/05/16 08:58
题目:
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 RAnd 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".
思路:
- 题意:首先这是一个z字形排列的数组,按照行输出
n=2时,字符串坐标变成zigzag的走法就是: 0 2 4 6 1 3 5 7 n=3时的走法是: 0 4 8 1 3 5 7 9 2 6 10 n=4时的走法是: 0 6 12 1 5 7 11 13 2 4 8 10 14 3 9 15 利用这个规律,可以按行填字,第一行和最后一行,就是按照2n-2的顺序排列。 其他行除了上面那个填字规则,就是还要处理斜着那条线的字,可以发现那条线的字的位置永远是当前列j+(2n-2)-2i(i是行的index),同时和 2n-2间隔排列组成中间的行
代码:
public class Solution { public String convert(String s, int numRows) { if(s == null && s.length() == 0 && numRows <= 0){ return ""; } if(numRows == 1){ return s; } StringBuffer sb = new StringBuffer(); int size = 2*numRows - 2; for(int i = 0;i < numRows;i++){ for(int j = i;j < s.length();j = j+size){ sb.append(s.charAt(j)); if(i != 0 && i != numRows-1){ int tmp = j + size -2*i; if(tmp < s.length()){ sb.append(s.charAt(tmp)); } } } } return sb.toString(); }}
0 0
- LeetCode(60)-ZigZag Conversion
- LeetCode: ZigZag Conversion
- LeetCode : ZigZag Conversion
- leetcode 13:zigzag conversion
- [LeetCode] Zigzag Conversion
- LeetCode 6 - ZigZag Conversion
- Leetcode : ZigZag Conversion
- 【leetcode】Zigzag Conversion
- [LeetCode]ZigZag Conversion
- leetcode ZigZag Conversion
- LeetCode-ZigZag Conversion
- LeetCode ZigZag Conversion
- LeetCode 6: ZigZag Conversion
- leetcode-006:ZigZag Conversion
- Leetcode: ZigZag Conversion
- [LeetCode]ZigZag Conversion
- [LeetCode] ZigZag Conversion
- [LeetCode]ZigZag Conversion
- ios开发之Protocol
- 辟谣!单向链表查找中点【附正确方法】
- 使用 VisualVM 进行性能分析及调优
- Linux 中的零拷贝技术,第 2 部分
- FIFO结构与实现
- LeetCode(60)-ZigZag Conversion
- 正则表达式-取最大相同的字符
- TCP和UDP的区别
- Java并发编程:Callable、Future和FutureTask
- iTerm 2 && Oh My Zsh
- 几种延迟加载JS代码的方法加快网页的访问速度
- Android学习(23) -- 数据存储之xml序列化器保存数据
- Window.name实现跨域
- 博客园地址