Leetcode 6. ZigZag Conversion(java版)
来源:互联网 发布:软件测试工资待遇2017 编辑:程序博客网 时间:2024/06/07 04:09
题目 and example:
题目大意:
给一个字符串,需要将这个字符串按照“|/|”这样的顺序排列,然后按行再将字符串合并。
思路:
- 每一组 V 字形的长度为 size = 2 * line - 2 (斜向上的部分没有第一行和最后一样的元素),line 是行数
- 对于垂直向下的一列元素来说,每一组向下的列之间间隔 size 大小,即一组元素的个数。
- 对于斜向上的元素来说,它们的位置位于当前组 size - i(i 为该元素所在的行数,一组有 size 个字符,倒数第 i 个,位置为 size - 1)。当前组的第一个字符所在位置为 j - i (j 为与斜向上的元素同在一行的,垂直向下的列的元素在字符串中的序号,i 为它们共同的行号)。
即:j-i就是zigzag的起始字符,然后我们是要倒数第i个,因为一个zigzag有size个字符,所以倒数第i个就是size-i,我们要赋值的字符就是(j-i)+(size-i)=j+size-2*i
代码:
class Solution { public String convert(String s, int numRows) { if(s == null || s.length() == 0 || numRows <= 0) return ""; if(numRows == 1 || s.length() == 1) return s; StringBuilder ans = new StringBuilder(); int size = numRows * 2 - 2; for(int i = 0 ; i < numRows ; i++) { for(int j = i ; j < s.length() ; j += size) { ans.append(s.charAt(j)); if(i != 0 && i != numRows - 1 && j + size - i * 2 < s.length()){ ans.append(s.charAt(j + size - i * 2)); } } } return ans.toString(); }}
阅读全文
0 0
- Leetcode 6. ZigZag Conversion(java版)
- Leetcode: 6. ZigZag Conversion(JAVA)
- LeetCode(java)6. ZigZag Conversion
- [LeetCode-Java]6. ZigZag Conversion
- [leetcode]6. ZigZag Conversion(Java)
- [Leetcode] ZigZag Conversion (Java)
- [LeetCode][Java] ZigZag Conversion
- 【leetcode】ZigZag Conversion【java】
- LeetCode : ZigZag Conversion [java]
- leetcode ZigZag Conversion(Java)
- LeetCode 6. ZigZag Conversion
- LeetCode --- 6. ZigZag Conversion
- LeetCode 6.ZigZag Conversion
- [Leetcode] 6. ZigZag Conversion
- 【leetcode】6. ZigZag Conversion
- [LeetCode] 6.ZigZag Conversion
- LeetCode - 6. ZigZag Conversion
- [leetcode] 6. ZigZag Conversion
- 除法
- java堆内存分配与回收策略
- json文件导入hbase
- Electron结合React开发桌面应用
- Djando模板
- Leetcode 6. ZigZag Conversion(java版)
- Linux网络编程--(2)网络编程基础
- a regression model that predicts one model variable.
- C++队列模拟银行排队叫号(加州大学伯克利分校计算机专业数据结构与算法作业)
- python 斐波那契数列
- 【NOIP2017提高A组集训10.28】图
- 西安现场打铁记
- 拉格朗日乘子法(Lagrange Multiplier)详解以及乘子lambda的意义
- Kubernetes集群部署(redhat7.2)