当前位置: 首页 > news >正文

leetcode---Z字形变换

题目:

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。请你实现这个将字符串进行指定行数变换的函数:

示例:

示例 1:

输入:s = "PAYPALISHIRING", numRows = 3
输出:"PAHNAPLSIIGYIR"

示例 2:

输入:s = "PAYPALISHIRING", numRows = 4
输出:"PINALSIGYAHRPI"
解释:

示例 3:

输入:s = "A", numRows = 1
输出:"A"

提示:

1 <= s.length <= 1000

s 由英文字母(小写和大写)、',' 和 '.' 组成

1 <= numRows <= 1000

图解:

返回:"LC"+"ET"+"OED"

代码+解题思路:

 public String convert(String s, int numRows) {if (numRows < 2) {return s;//如果只有一行输出就直接返回s}//创建集合,它里面的内容是一个StringButter类型//使用StringButter是为了方便字符串每一部分的拼接List<StringBuilder> list = new ArrayList<>();for (int i = 0; i < numRows; i++) {list.add(new StringBuilder());}//每个位置都是 StringBuilderint index = 0, flag = -1;for (char c : s.toCharArray()) {//遍历s,遍历结果为字符类型String s1 = Character.toString(c);//将字符类型转换为字符串类形list.get(index).append(s1);//在index索引位置拼接s1if (index == 0 || index == numRows - 1) {flag = -flag;//转折点flag要变号}index = index + flag;//下一个字符存储的集合位置}String res = new String();for (int i = 0; i < list.size(); i++) {res += list.get(i);//将集合的每一部分全部拼接在一起}return res;//最终返回拼接后的字符串}

相关文章:

  • 数据结构<1>——树状数组
  • 汇编中的标签与C语言的函数对比与区别
  • Windows10上通过MSYS2编译FFmpeg 6.1.1源码操作步骤
  • 时间序列大模型:TimeGPT
  • 大数据平台红蓝对抗 - 磨利刃,淬精兵!
  • 搭建k8s集群实战(一)系统设置
  • 机器学习-决策树【手撕】
  • spawn_group_template | spawn_group | linked_respawn
  • 【Flink-CDC】Flink CDC 介绍和原理概述
  • 编码风格之(5)GNU软件编码风格(3)
  • c# MathNet.Numerics 圆拟合使用案例
  • 08章【文件与IO】
  • CMS如何调优
  • 如何在Docker下部署MinIO存储服务通过Buckets实现文件的远程上传
  • keil5 查看stm32 寄存器的值
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【个人向】《HTTP图解》阅后小结
  • Bytom交易说明(账户管理模式)
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • LintCode 31. partitionArray 数组划分
  • Python - 闭包Closure
  • Rancher如何对接Ceph-RBD块存储
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • Zepto.js源码学习之二
  • 阿里云前端周刊 - 第 26 期
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 从零开始的无人驾驶 1
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 订阅Forge Viewer所有的事件
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 开源地图数据可视化库——mapnik
  • 容器服务kubernetes弹性伸缩高级用法
  • 通过npm或yarn自动生成vue组件
  • 物联网链路协议
  • 携程小程序初体验
  • 学习JavaScript数据结构与算法 — 树
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • #Ubuntu(修改root信息)
  • (¥1011)-(一千零一拾一元整)输出
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (层次遍历)104. 二叉树的最大深度
  • (第27天)Oracle 数据泵转换分区表
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)项目管理杂谈-我所期望的新人
  • (转载)hibernate缓存
  • *1 计算机基础和操作系统基础及几大协议
  • .Net core 6.0 升8.0
  • .NET Core 版本不支持的问题
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net mvc 获取url中controller和action