【LeetCode】6. ZigZag Conversion 锯齿形转换
题目:
思路:
以图为例:s={'A','B','C','D','E','F','G','H'.....}
1.先不考虑中间元素F、G、H、N...,每一行前后元素在数组中对应下标相差size=2*numRows-2(其中numRows是行数)
例如:第1行起始元素s[0]=A,在不大于数组长度情况下,size=2*5-2=8,该行往后依次是s[0+8]=s[8],s[0+8+8]=s[16].....
2.考虑加入中间元素,j表示当前元素所在数组的下标,i为该元素所在行(从0开始),则除第一行和最后一行外,每行前后元素间加的元素对应数 组s中下标为:j-i+(size-i)。j-i表示起始位置,size-i可理解为该行前后元素相差size,而i可看成这个size长度的倒数第i个位置
例如:第2行(即i=1)中:
若当前元素下标j=1,即s[1]=B,下一个元素为s[1+8]=s[9]=J,中间要加的元素s[1-1+8-1]=s[7]=H;
public class Solution {
public String convert(String s, int numRows) {
if(s==null||s.length()==0||numRows<=0){
return "";
}
if(numRows==1){
return s;
}
int size=2*numRows-2;
StringBuffer sb=new StringBuffer();
for(int i=0;i<numRows;i++){
for(int j=i;j<s.length();j+=size){
sb.append(s.charAt(j));
if(i!=0 && i!=numRows-1 && j-i+size-i<s.length()){//不是第一行和最后一行,考虑加入中间的元素
sb.append(s.charAt(j-i+size-i));
}
}
}
return sb.toString();
}
}
【LeetCode】6. ZigZag Conversion 锯齿形转换的更多相关文章
- LeetCode:二叉树的锯齿形层次遍历【103】
LeetCode:二叉树的锯齿形层次遍历[103] 题目描述 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如:给定二叉树 ...
- LeetCode 103. 二叉树的锯齿形层次遍历(Binary Tree Zigzag Level Order Traversal)
103. 二叉树的锯齿形层次遍历 103. Binary Tree Zigzag Level Order Traversal 题目描述 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再 ...
- LeetCode 6. ZigZag Conversion & 字符串
ZigZag Conversion 看了三遍题目才懂,都有点怀疑自己是不是够聪明... 就是排成这个样子啦,然后从左往右逐行读取返回. 这题看起来很简单,做起来,应该也很简单. 通过位置计算行数: P ...
- [LeetCode] 103. 二叉树的锯齿形层次遍历
题目链接 : https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/ 题目描述: 给定一个二叉树,返回其节 ...
- Leetcode 6. ZigZag Conversion(找规律,水题)
6. ZigZag Conversion Medium The string "PAYPALISHIRING" is written in a zigzag pattern on ...
- Java实现 LeetCode 103 二叉树的锯齿形层次遍历
103. 二叉树的锯齿形层次遍历 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,null ...
- leetcode:ZigZag Conversion 曲线转换
Question: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of ...
- [LeetCode] 6. ZigZag Conversion 之字型转换字符串
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- [leetcode]6. ZigZag Conversion字符串Z形排列
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
随机推荐
- (转)VS.NET2010水晶报表安装部署[VS2010]
本文转载自:http://www.cnblogs.com/xiaofengfeng/p/3325793.html 欢迎C#高手加盟QQ群:9340166 水晶报表VS2010版IDE安装标准版SAP ...
- 【log】logback.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 控制台 - ...
- 报错:java.lang.IllegalStateException: Cannot call sendError() after the response has been committed(待解答)
严重: Servlet.service() for servlet [default] in context with path [/20161101-struts2-1] threw excepti ...
- 转--Android按钮单击事件的四种常用写法总结
这篇文章主要介绍了Android按钮单击事件的四种常用写法总结,比较了常见的四种写法的优劣,有不错的参考借鉴价值,需要的朋友可以参考下 很多学习Android程序设计的人都会发现每个人对代码的 ...
- 1小时vpn coding让开发更简单 或https://www.imfreevpn.org/
- LInux SSH远程文件/目录传输命令scp(转载)
From:http://www.vpser.net/manage/scp.html 相信各位VPSer在使用VPS是经常会在不同VPS间相互备份数据或转移数据.一般情况下VPS都已安装了Ngnix或者 ...
- Yii2.0 数据库查询方法
User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User:: ...
- 程序员遇到Bug时的30个反应
开发应用程序是一个非常有压力的工作.没有人是完美的,因此在这个行业中,代码中出现bug是相当普遍的现象.面对bug,一些程序员会生气,会沮丧,会心烦意乱,甚至会灰心丧气,而另一些程序员会依然保持冷静沉 ...
- mongodb csv 文件导入数据库,删除特定字段
1. 导入数据库 mongoimport -h host_ip -p port -d db_name -c collection_name --fields name1,name2,name3,nam ...
- CSS设置图片垂直居中的方法
如果是应用了表格,那么设置单元格为align="center"就可以使其中的一切内容居中.如果没有应用表格要想设置图片居中就有点困难了.困难来自不按"常规出牌" ...