LeetCode_6---ZigZag Conversion
来源:互联网 发布:商家给淘宝开具什么 编辑:程序博客网 时间:2024/06/05 00:55
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"
.题目翻译:根据ZIGZAG模式,翻译字符串,模型如下
Zigzag:即循环对角线结构
0 8 16 1 79 1517 2 6 10 14 18 35 1113 19 4 12 20向下循环:nRows
斜角线循环:nRows-2(减去首尾两个端点)
Code:
import java.util.HashMap;import java.util.Map;/** * *//** * @author MohnSnow * @time 2015年6月1日 下午5:01:05 * */public class LeetCode6 {/** * @param argsmengdx * -fnst */public static String convert(String text, int nRows) {if (nRows == 1) {return text;}Map<Integer, StringBuilder> result = new HashMap<>(nRows);int eachRoundNumber = 2 * nRows - 2;//循环一组的下标长度for (int i = 1; i <= nRows; i++) {//map初始化result.put(i, new StringBuilder());}for (int i = 1; i <= text.length(); i++) {//模拟过程int key = i % eachRoundNumber;key = key == 0 ? eachRoundNumber : key;//巧妙使用三目运算符key = key <= nRows ? key : nRows - (key % nRows);result.get(key).append(text.charAt(i - 1));//字符起始位置为0}StringBuilder rest = new StringBuilder();//整合结果for (int i = 1; i <= nRows; i++) {rest.append(result.get(i));}return rest.toString();}public static String convert1(String text, int nRows) {if (nRows == 1) {return text;}Map<Integer, StringBuilder> result = new HashMap<>(nRows);int eachRoundNumber = 2 * nRows - 2;//循环一组的下标长度for (int i = 1; i <= nRows; i++) {//map初始化result.put(i, new StringBuilder());}for (int i = 1; i <= text.length(); i++) {//模拟过程int key = i % eachRoundNumber;if (key == 0) {result.get(2).append(text.charAt(i - 1));}else if (key <= nRows) {result.get(key).append(text.charAt(i - 1));} else {result.get(2 * nRows - key).append(text.charAt(i - 1));}}StringBuilder rest = new StringBuilder();//整合结果for (int i = 1; i <= nRows; i++) {rest.append(result.get(i));}return rest.toString();}public static void main(String[] args) {String s = "abcdefadfg";int a = 3;System.out.println(s + "2");System.out.println(convert(s, a));System.out.println(convert1(s, a));}}
0 0
- LeetCode_6---ZigZag Conversion
- Leetcode_6 : ZigZag Conversion
- leetcode_6. ZigZag Conversion ? 待解决
- leetcode_6. ZigZag Conversion 按行打印ZigZag 后的结果
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- Zigzag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- ZigZag Conversion
- 第13周多态性与虚函数程序阅读
- 文章标题
- java 简单的窗口程序之创建框架
- 查看那个broadcast发的intent
- [BI项目记]-搭建代码管理环境之云端
- LeetCode_6---ZigZag Conversion
- 十七、Python SQLAlchemy
- java.util.List中subList方法
- 网站接入银联网上支付(B2B)
- ubuntu 开启远程连接 ssh
- 前端MVVM框架avalon学习笔记
- c++回调函数
- [BI项目记]-文档版本管理笔记
- 我在整合yii 和 cas的时候遇到的事!