6. ZigZag Conversion
来源:互联网 发布:江苏卫视网络源 编辑:程序博客网 时间:2024/06/03 21:38
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”.
思路:
1. 先定义一个数组array的长度和宽度,我按最长的长度定义的为s.length()/2+1;
2. 将字符串中的字符逐个按 ‘z’ 字形添加到数组中,注意调整col和row;
3. 定义一个StringBuilder sb,逐行扫描数组array,将每一个字符都追加到sb中。
4. 返回sb;
// 6. ZigZag Conversion public String convert(String s, int numRows) { if(s==null || s.equals("") || numRows==1) return s;// int cols = (s.length()*2)/(numRows+1); int cols = s.length()/2+1; int rows = numRows; char[][] array= new char[rows][cols]; int col = 0; int row = 0; boolean flag = false;// 按Z字形放到数组中 for(int i= 0;i<s.length();i++){ if(flag){ array[row--][col++] = s.charAt(i); if(row == 0){ row = 0; flag = false; } }else{ array[row++][col] = s.charAt(i); if(row == numRows){ flag = true; row -= 2; col++; } if(row == 0){ flag = false; row = 0; } } } //开始打印 StringBuilder sb = new StringBuilder(); for(int i = 0;i<rows;i++){ for(int j = 0;j<cols;j++){ if(array[i][j]!=0){ sb.append(array[i][j]); } } } return sb.toString(); }
测试用例:
@Test public void convertTest(){ println(s.convert("PAYPALISHIRING", 3)); println(s.convert("PAYPALISHIRING", 4)); println(s.convert("PAYPALISHIRING", 2)); println(s.convert("PAYPALISHIRING", 1)); }
输出结果:
PAHNAPLSIIGYIRPINALSIGYAHRPIPYAIHRNAPLSIIGPAYPALISHIRING
0 0
- LeetCode 6. ZigZag Conversion
- LeetCode --- 6. ZigZag Conversion
- LeetCode 6.ZigZag Conversion
- [Leetcode] 6. ZigZag Conversion
- 6.ZigZag Conversion
- 6. ZigZag Conversion
- 6. ZigZag Conversion
- 【leetcode】6. ZigZag Conversion
- 6.ZigZag Conversion
- 6. ZigZag Conversion
- 6.ZigZag Conversion
- [LeetCode] 6.ZigZag Conversion
- LeetCode - 6. ZigZag Conversion
- 6. ZigZag Conversion
- 6. ZigZag Conversion
- 6.ZigZag Conversion(93.10%)
- 6. ZigZag Conversion
- [leetcode] 6. ZigZag Conversion
- R语言数据输入输出
- android设计模式
- python网络编程之阻塞与非阻塞模式的选择
- 搭建Spring(4)
- python里isinstance()函数的用法
- 6. ZigZag Conversion
- '\r'和'\n'的区别
- [Java]Error:No enclosing instance of type E is accessible. Must qualify the allocation with an enclo
- 应聘者面试的收获-说说工作的正确姿势(20170108)
- 新浪云PHP7.0连接MySQL
- 解决jQery和其他库的冲突
- Alize
- Android api level对照表
- csdn博客栏bug集合