题目:

思路:

以图为例: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 锯齿形转换的更多相关文章

  1. LeetCode:二叉树的锯齿形层次遍历【103】

    LeetCode:二叉树的锯齿形层次遍历[103] 题目描述 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如:给定二叉树 ...

  2. LeetCode 103. 二叉树的锯齿形层次遍历(Binary Tree Zigzag Level Order Traversal)

    103. 二叉树的锯齿形层次遍历 103. Binary Tree Zigzag Level Order Traversal 题目描述 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再 ...

  3. LeetCode 6. ZigZag Conversion & 字符串

    ZigZag Conversion 看了三遍题目才懂,都有点怀疑自己是不是够聪明... 就是排成这个样子啦,然后从左往右逐行读取返回. 这题看起来很简单,做起来,应该也很简单. 通过位置计算行数: P ...

  4. [LeetCode] 103. 二叉树的锯齿形层次遍历

    题目链接 : https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/ 题目描述: 给定一个二叉树,返回其节 ...

  5. Leetcode 6. ZigZag Conversion(找规律,水题)

    6. ZigZag Conversion Medium The string "PAYPALISHIRING" is written in a zigzag pattern on ...

  6. Java实现 LeetCode 103 二叉树的锯齿形层次遍历

    103. 二叉树的锯齿形层次遍历 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,null ...

  7. leetcode:ZigZag Conversion 曲线转换

    Question: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of ...

  8. [LeetCode] 6. ZigZag Conversion 之字型转换字符串

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  9. [leetcode]6. ZigZag Conversion字符串Z形排列

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

随机推荐

  1. 样本方差:为嘛分母是n-1

    在样本方差计算式中,我们使用Xbar代替随机变量均值μ. 容易证明(参考随便一本会讲述样本方差的教材),只要Xbar不等于μ,sigma(Xi-Xbar)2必定小于sigma(Xi-μ)2. 然而,要 ...

  2. 【freemaker】之FreeMakerUtil工具类

    Freemaker生成文件常用工具类 public class FreemakerUtil { private static FreemakerUtil util; private static Co ...

  3. activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建

    项目中需要整合activiti-modeler自定义流程,找了很多资料后,终于成功的跳转到activiti-modeler流程设计界面,以下是记录: 一.整合基础:eclipse4.4.1.tomca ...

  4. Titan-红号楼宗谱案例

    一. 简介 titan:存储,查询图形结构的数据库.分布式集群环境下,可支持数以千亿级别的点和边,同时支持上千个并发的实时的复杂图形遍历,支持ACID事务. 架构:支持以下3方面的自由组合 (1)节点 ...

  5. iphone dev 入门实例5:Get the User Location & Address in iPhone App

    Create the Project and Design the Interface First, create a new Xcode project using the Single View ...

  6. SOA_Oracle SOA Suite and BPM Suite 11g官方虚拟机安装指南(案例)

    参考:Oracle官方 - http://www.oracle.com/technetwork/middleware/soasuite/learnmore/vmsoa-172279.html?ssSo ...

  7. AP_AP系列 - 费用报表分析(案例)

    2014-07-08 Created By BaoXinjian

  8. python (7)读取整个目录的所有文件夹并存入

    一,提取出来一个文件夹中的所有文件名并存入到txt文件中 import os import sys reload(sys) sys.setdefaultencoding('utf-8') path = ...

  9. poj 1011 Sticks

    Sticks Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 126238   Accepted: 29477 Descrip ...

  10. android 基本知识

    307966990 lyd@itcast.com 13716040037 李印东 东东 通信技术: 1G 模拟制式 语音通话. 2G GSM, CDMA 收发短信和邮件. 2.5G GPRS, EDG ...