1 class Solution {
 2 public:
 3     string convert(string s, int nRows) {
 4        string a="";
 5        int len=s.length();
 6        if(len<=nRows||nRows==1)    return s;    //只有n个,不足一个周期||排成一行
 7        int teams=len/(nRows*2-2);    //teams个完整的周期
 8        int rest=len%(nRows*2-2);    //最后一个不足完整周期的元素数
 9        int k=0,i=0,j=0;
10        for(i=0;i<nRows;i++){
11            k=i;
12            for(j=0;j<teams;j++){
13                a+=s[k];
14                if(i!=0 && i!=nRows-1){    //每个周期内有两个
15                    a+=s[(nRows*2-2)*(j+1)-i];
16                }
17                k+=nRows*2-2;
18            }
19            if(i<rest)
20                a+=s[k];
21            if(rest>nRows && rest>(nRows*2-2-i) && (nRows*2-2-i)>=nRows)
22                a+=s[(nRows*2-2)*(j+1)-i];
23        }
24        return a;
25     }
26 };

ZigZag Conversion

题意:将一串字母按Z字(类似而已,具体看leetcode题目那样)排列,再按行串到一起返回。

思路:按周期,每n-2个为一个周期,最后可能不足一个周期,要特殊处理。因为一个周期内的Z字是有折叠的,所以一个周期内有的需要两个加起来。

吐槽:这个方法不精简,但是运行时间96ms。上网艘了一下别人的精简代码,确实很漂亮,但是时间达到168ms。那我还是暂时用这个好了。数据分析说有的居然50几ms就搞定,求代码喔~

转载于:https://www.cnblogs.com/xcw0754/p/4200117.html

LeetCode ZigZag Conversion(将字符串排成z字型)相关推荐

  1. LeetCode琅琊榜第十六层-Z字型变换(直接构造法 + 周期性算法)

    LeetCode6.Z字形变换 难度:中等 往期力扣与博主空间 题目链接  目录 官方解法1-构造Z字型数组模拟 案例分析 规律探索 原因: 代码实现 代码分析: 问题 官方解法二-压缩上述二维数组 ...

  2. [LeetCode]ZigZag Conversion

    题目:ZigZag Conversion 一串字符按照Z字形的数组给了我们,要求转成原本的顺序. 思路: 统计"|/"的个数: 竖着的和斜着的下标有对应关系: 竖着的:k = j* ...

  3. LeetCode ZigZag Conversion

    题意:给出一个字符串和行数,求字符串zigzag变换后的字符串 如PAYPALISHIRING和行数为3,zigzag形式为 P A H N A P L S I I G Y I R 即结果字符串为PA ...

  4. [LeetCode] Z字型变换

    题目内容: 将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数:P A H N A P L S I I G Y I R 之后从左往右,逐行读取字符:"P ...

  5. leetcode算法题--Z字型变换

    题目链接:https://leetcode-cn.com/problems/zigzag-conversion/ 用一个二维数组来存储这个字符串,就是按照题目的方式存储,然后按行遍历即可. strin ...

  6. leetcode 6 z字型变换

    执行用时 :64 ms, 在所有 Python3 提交中击败了99.74%的用户 由题目可知 我们的最终字符串会被摆成 numRows 行,那我们理解为 最终结果是numRows个字符串相加 先建立等 ...

  7. Z字型变幻,整数反转

    题目1: 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列 ...

  8. [LeetCode题解] ZigZag Conversion

    原文在这,可以来我blog翻翻哦. 第二天.今天AC掉了一道之前没AC掉的题目... 今天的题目是6. ZigZag Conversion 题目描述: The string "PAYPALI ...

  9. leetCode 6. ZigZag Conversion 字符串 (上传费劲)

    6. ZigZag Conversion 题目:https://leetcode.com/problems/zigzag-conversion/ 1 2 3 4 5 6 7 8 9 10 11 12 ...

  10. [勇者闯LeetCode] 6. ZigZag Conversion

    [勇者闯LeetCode] 6. ZigZag Conversion Description The string "PAYPALISHIRING" is written in a ...

最新文章

  1. python分配buffer_Node.js中的buffer如何和python中的buffer相对应
  2. startActivityForResult用法详解
  3. java 单例 读写锁_终极锁实战:单JVM锁+分布式锁
  4. 金蝶云系统服务器,金蝶系统云服务器已离线
  5. 数据结构之基于Java的链接队列实现
  6. winxp下安装虚拟机,并安装linux操作系统
  7. matlab查看RGB图像矩阵数值
  8. Attit 现代编程语言重要特性目录第一章 类型系统 基本三大类型 2第一节 字符串 数字 bool 2第二节 推断局部变量 2第三节 动态类型 2第二章 可读性与开发效率 简单性 2
  9. java jsonproperty_将多个JSON字段映射到单个Java字段
  10. 解决黑苹果核显HD4400开机卡在“io console user: gio screen lock state 3”问题/HD4400核显只有7M问题
  11. SN/CF 5W-40含义
  12. CORBA的基本内容(上)
  13. 企业级解决SQL注入、XSS攻击解决案例
  14. 2022 年我作为创作者使用的 5 个强大的 iPad 应用程序
  15. 【数学建模】常用模型算法及MATLAB代码汇总
  16. Oracle函数练习题
  17. 计算平均分(C语言)
  18. Solidworks2008 API 开发的问题。
  19. 使用虚拟机模拟Pickering开关及程控电阻的方法
  20. js php 实现日历签到_php+mysql+jquery实现日历签到功能的过程与步骤

热门文章

  1. 解决Instruments检测内存泄漏时真机无法定位的问题
  2. 第二节:各种路由约束(动态路由、静态路由、组合路由、正则约束、命名空间约束、区域内路由)...
  3. mysql数据库获得树的节点
  4. 58、IPv6访问控制列表及ICMPv6简介
  5. Arcgis Javascript API 开发笔记
  6. 从0开始学习C#第二天
  7. linux PDF转换为SWF
  8. 如何在mysql navicat 设置datetime类型的默认事件值
  9. nodemon运行 提示错误:无法加载文件 C:\Users\gxf\AppData\Roaming\npm\nodemon.ps1,因为在此系统上禁止运行脚本。
  10. 什么是configmap资源、secret资源(实战)