ZigZag Conversion
2015-12-01 20:40
281 查看
题目:
The string
this: (you may want to display this pattern in a fixed font for better legibility)
And then read line by line:
Write the code that will take a string and make this conversion given a number of rows:
return
好吧,不得不承认,自己开始没看懂题目,百度了下才看懂题目,其实就是“之字型”。
题目看懂了后思路就比较直观了,用一个字符串数组来存每一行的数据,边遍历边把数据放到相应的行里去,找个变量来记录当前的行数,因为行数变化有加减两种情况,所以搞个标志位来判断当前的行数应该加还是减,每当行数到最大行或者第一行标志位取反即可。相应代码如下:
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 N A P L S I I G Y 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".
好吧,不得不承认,自己开始没看懂题目,百度了下才看懂题目,其实就是“之字型”。
题目看懂了后思路就比较直观了,用一个字符串数组来存每一行的数据,边遍历边把数据放到相应的行里去,找个变量来记录当前的行数,因为行数变化有加减两种情况,所以搞个标志位来判断当前的行数应该加还是减,每当行数到最大行或者第一行标志位取反即可。相应代码如下:
public class Solution { public String convert(String s, int numRows) { //各种特殊情况的处理,养成入参检查的习惯是很重要! if (s == null || s.length() == 0 || numRows <= 1) { return s; } String[] strings = new String[numRows]; Arrays.fill(strings,"");//字符串数组初始化,否者会有null输出 int num = 0; boolean flag = true;//判断行数该加还是该减的标志位 for (int i = 0;i < s.length();i++) { strings[num] += s.charAt(i); if (num == 0) { flag = true; } if (num == numRows-1) { flag = false; } num = flag?++num:--num; } String s1 = ""; for (int i = 0;i < numRows;i++) { s1 += strings[i]; } return s1; } }
相关文章推荐
- 探索需求——设计前的质量之一
- LightOJ 1275 - Internet Service Providers (简单数学)
- Android异步加载(二)
- 矩阵快速幂模板
- hadoop和spark搭建记录
- “留拍”剖析
- Netbeans8下 Weblogic EJB案例
- Reverse Integer
- OSPF 你懂多少之经典问题50 个
- 送给和我一样曾经浮躁过的PHPer程序猿,希望有帮助
- 探索需求--设计前的质量之二
- Office365与本地Exchange混合部署后无法互相发送邮件及解决方案
- 求:未排序数组中累加和为给定值的最长子数组长度
- 只是背着女友和别人热忱地相爱了,而已
- CORS 头缺少 'Access-Control-Allow-Origin'
- 对联
- CAS实现SSO单点登录原理
- android 计算器
- 对面向对象中多态的理解
- java Servlet接口及应用(转)