LeetCode--ZigZag Conversion
来源:互联网 发布:广数g92车英制螺纹编程 编辑:程序博客网 时间:2024/06/15 02:34
问题描述
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)
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”.
解决方案
找到ZigZag每一行的步长规律:第一行和最后一行都只有一种步长;中间的行为两种步长间隔增加
代码
public class ZigZagConversion { public String convert(String s, int numRows) { if(s.length() == 0) return ""; if(numRows==1) return s; //get the raw characters array char[] raw = s.toCharArray(); int length = raw.length; char[] result = new char[length]; //calculate the steps int outerStep = 2*numRows-2; int innerStep_first = 0; int innerStep_second = 0; int current = 0; int pos = 0; for(int row=0; row < numRows; row++){ if(row==0 || row==numRows-1){ //for the first and last row pos = row; while(pos < length){ result[current++] = raw[pos]; pos += outerStep; } }else{ innerStep_first = outerStep - row*2; innerStep_second = outerStep - innerStep_first; pos = row; boolean stepSwitch = false; //need to switch innerstep while(pos < length){ if(!stepSwitch){ result[current++] = raw[pos]; pos += innerStep_first; stepSwitch = true; }else{ result[current++] = raw[pos]; pos += innerStep_second; stepSwitch = false; } } } } String r = String.valueOf(result); return r; }
0 0
- 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
- leetcode: ZigZag Conversion
- Fiddler 设置断点,修改服务器响应消息
- openssl升级
- 算术表达式求解——堆栈的应用
- js程序 下拉框功能,当选择大学下拉框时,隐藏下拉框,将其对应的值,展示到span标签中
- db64封装函数,可以直接用。
- LeetCode--ZigZag Conversion
- 简单的模板整理(待续)
- 十大热门行业公布 成都仍是跳槽首选
- uboot启动过程(代码流程)
- Eclipse Memory Analyzer
- haproxy+keepalived的集成
- NPM配置问题
- 欢迎使用CSDN-markdown编辑器
- xml-在程序中写xml并将内存中的xml保存至文件中