LeetCode解题报告--ZigZag Conversion
2015-06-02 00:04
459 查看
题目来源:https://leetcode.com/problems/zigzag-conversion/
P AH N
AP LS I I G
YI R
解法一:
间距为: icount = 2 * (nRows - 1)
每列的字符个数为:i = nRows[from 0 to (nRows - 1)]
中间未加粗字符其下标为: mid = j + icount - 2 * i (j : from 0 to s.length() - 1)
public static String convert(String s, int numRows) { int icount = 2 * (numRows - 1); String newStr = ""; if(numRows < 2 || s.length() <= 1) return s; else{ for(int i = 0;i < numRows;i ++){ for(int j = i;j < s.length();j += icount){ newStr += s.charAt(j); int mid = j + icount - 2 * i; if(i != 0 && i != numRows - 1 && mid >= 0 && mid < s.length()){ newStr += s.charAt(mid); } } } return newStr; } }
解法二:
将每层看层一个字符串,则共有nRows字符串,最后将其依次输出即可。
public static String convert(String s, int numRows) {
StringBuffer[] str = new StringBuffer[numRows]; boolean down = true; int j = 0; if(s.length() <= 1 || numRows <= 1) return s; for(int i = 0;i < str.length;i ++) str[i] = new StringBuffer(); for(int i = 0;i < s.length();i ++){ str[j].append(s.charAt(i)); if(j == 0) down = true; else if(j == numRows - 1) down =false; if(down) j ++; else j --; } StringBuffer newStr= new StringBuffer(); for(StringBuffer string : str) newStr.append(string.toString()); return newStr.toString(); }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- 数据库链接字符串查询网站