题目内容:

将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数:P   A   H   N
A P L S I I G
Y   I   R
之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR"实现一个将字符串进行指定行数变换的函数:string convert(string s, int numRows);
示例 1:输入: s = "PAYPALISHIRING", numRows = 3
输出: "PAHNAPLSIIGYIR"
示例 2:输入: s = "PAYPALISHIRING", numRows = 4
输出: "PINALSIGYAHRPI"

  

思路:

找规律的题目,字符串各字母内容不管,找下标的规律,拿上面的第二个样例为例子,下标排列是这样子的

 /** 0     6     12* 1   5 7  11 13* 2  4  8 10  14* 3     9     * */

  

可以看出,除去斜边的,每一行都是一个等差数列,例如0,6,12

而斜边的是竖排中的数加上某一个固定值,例如第二行就是1+4=5,7+4=11

然后综合可以总结出规律,等差数列的差是numRows+numRows-2,即2*numRows-2,其实就是同一行相邻数字中隔的数字

然后每一行中间要加的固定值,是前面等差数列的差依次-2,因为每向下一行两个数间隔就少两个数,例如第二行固定值4,第三行固定值就是4-2=2

之后就是用代码实现了,相信也不难写了

if(numRows>s.length()||numRows==1)return s;int length = s.length();int count = numRows*2-2;int next = 0;String result = "";for(int i = 0;i < numRows;i++){for(int j = i;j < length;){result = result + s.charAt(j);next = j + count - 2 * i;if(i!=0&&i!=numRows-1&&next<length){//第一行和最后一行竖排中的数加上固定值和这个数字在等差数列的下一个值相等//所以这两行不管它result = result + s.charAt(next);}j = j + count;}}return result;

  

这个还不是最优解,到时候看看还能不能优化

转载于:https://www.cnblogs.com/Yintianhao/p/9864952.html

[LeetCode] Z字型变换相关推荐

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

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

  2. leetcode 6 z字型变换

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

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

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

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

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

  5. P1032 字串变换(bfs)

    https://www.luogu.org/problemnew/show/P1032 题目描述 已知有两个字串A,BA,B及一组字串变换的规则(至多66个规则): A 1-> B 1 A 2 ...

  6. LeetCode(6)-Python-Z 字形变换(zigzag-conversion)

    题目描述 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列.(我个人觉得这个更加比较像倒N) 比如输入字符串为 "LEETCODEISHIRING" 行数为 ...

  7. 菜鸟必读 Linux系统的字型设定方法

    这次我们来讲解如何调整各式各样的字型设定,如何安装新字体,和其他可以大大改善Xwindow字型的外观和可读性的方法.这是藉由调整XF86Config文件中的字型路径(FontPath),在startx ...

  8. css字体的字型,CSS的字体、字型控制_css

    ★☆★使用css你可以对页面的字体进行任意的控制,比起html简直方便不知多少. CSS使用"font-size"属性来控制字体大小. CSS中可以使用的单位:points, pi ...

  9. 1099 字串变换 2002年NOIP全国联赛提高组

    1099 字串变换 2002年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解 题目描述 Description 已知有两个字串 A ...

最新文章

  1. python excel处理框架_django框架基于模板 生成 excel(xls) 文件操作示例
  2. jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中
  3. POJ1328贪心放雷达
  4. sap abap开发从入门到精通_SAP开发-ABAP数据字典(锁)
  5. SpringBoot设置首页(默认页)跳转
  6. 从源码分析RocketMQ系列-Producer的SendResult的封装
  7. python多线程教程_Python多线程编程教程【2小时学会】
  8. 如何在centos7上安装FreeIPA的客户端
  9. 编程语言_Java方法参数...是什么意思_面试题008
  10. python读写excel模块pandas_python3 基于pandas读写Excel
  11. timesten java_使用java调用timesten实现Oracle入库
  12. XMPP即时通讯协议使用(前传)——协议详解
  13. 计算入瞳、出瞳位置及孔径大小
  14. python标准差不用numpy_Python numpy标准差
  15. Texstudio安装后闪退|重装系统Windows10|texstudio2022
  16. 计算机中丢失msvcp120.dll是什么意思,win7系统玩游戏提示“msvcp120.dll丢失”怎么修复...
  17. Python学习打卡【Task3】异常处理
  18. 2018.6.17 英语六级学习单词汇总
  19. 了解 TCP 系统调用序列
  20. 中职学生学业水平计算机考试试题,中职学业水平测试试卷(综合卷).docx

热门文章

  1. Java实现一个简单的加密解密方法
  2. 《中国人工智能学会通讯》——12.33 众包知识库补全方法概览
  3. Spring与Quartz集成详解
  4. 网易财报暗藏玄机,不经意间已编织出电商大网
  5. SqlParameter[] 添加参数
  6. 发布中文搜索引擎数据库 TngouDB
  7. angular的$q服务和promise模式
  8. [leetcode]Merge Intervals @ Python
  9. 百度BAE JAVA环境项目部署和调试
  10. Android 4 开发环境配置中的诸多陷阱