leetcode 6 : ZigZag Conversion
来源:互联网 发布:python list length 编辑:程序博客网 时间:2024/06/07 05:25
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"
.
思路:
1.Z字形的数,第一行和最后一行要单独考虑,中间行需要找规律。
2.
首先可以发现需要用循环来解决。第一行中,下一个数字是7,是第1+3列,第二行中,下一个数字是6,是2+2列,依次类推发现了列的关系是(numRows-1-i)*2
而且还应该是一个列的循环,所以还要定义一个参数j=i。
第一行的规律是:
1 = j
7 = j+ (numRows-1-i)*2 = 1+(5-1-1)*2 = 7
j = j+ (numRows-1)*2
9 = j
15 = j+ (numRows-1-i)*2 =9+(5-1-1)*2=15
下面的每一行依次类推。
代码:
public class Solution { public String convert(String s, int numRows) {if (s == null || s.length() <= numRows || numRows <= 1) return s;StringBuffer sb=new StringBuffer();//line 1 for(int i=0;i<s.length();i+=2*(numRows-1)) sb.append(s.charAt(i)); //line middle for(int i=1;i<numRows-1;i++){ for(int j=i;j<s.length();j+=(numRows-1)*2){ sb.append(s.charAt(j)); if((j+(numRows-1-i)*2)<s.length()) sb.append(s.charAt(j+(numRows-1-i)*2)); } } //line last for (int i = numRows - 1; i < s.length(); i += (numRows - 1) * 2) sb.append(s.charAt(i));return sb.toString(); }}
0 0
- 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
- 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
- LeetCode 6 - ZigZag Conversion
- leetcode 6ZigZag Conversion
- 使用Eclipsephp工具打开Thinkphp为什么会有红色的波浪线报警?
- Lenovo Newifi 信令简单调研
- Thinkphp子查询问题总结
- 数据解析大总结
- 使用ngrok让微信公众平台通过80端口访问本机
- leetcode 6 : ZigZag Conversion
- C语言数据结构-顺序表
- 热点链接空白时点击崩溃问题
- Erlang的调度原理
- Block(高级)大总结
- Android 代码重构
- iOS 9对前端做了什么?
- POJ - 1321 棋盘问题(DFS)
- quick-cocos2dx3.5 mac模拟器改进