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

Z字形变换

问题:

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:

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"
解释:
P     I    N
A   L S  I G
Y A   H R
P     I

示例 3:

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

思路:

使用List装载字符输出的行数,用flag控制字符输出在哪一行,用stringBuilder保存字符。

代码:

class Solution {public String convert(String s, int numRows) {if(numRows < 2) return s;List<StringBuilder> rows = new ArrayList<>();for(int i = 0; i < numRows; i++){rows.add(new StringBuilder());}int i= 0,flag = -1;for(char c:s.toCharArray()){rows.get(i).append(c);if(i == 0 || i == numRows - 1){flag = -flag;}i += flag;}StringBuilder res = new StringBuilder();for(StringBuilder row : rows){res.append(row);}return res.toString();}
}

http://www.lryc.cn/news/297699.html

相关文章:

  • 飞书上传图片
  • Java微服务学习Day1
  • STM32标准库驱动W25Q64模块读写字库数据+OLED0.96显示例程
  • 【java】简单的Java语言控制台程序
  • 【服务器数据恢复】HP EVA虚拟化磁盘阵列数据恢复原理方案
  • 08-OpenFeign-结合Sentinel,实现熔断降级
  • 15.实现数组的扁平化
  • 对话模型Demo解读(使用代码解读原理)
  • Android 自定义BaseFragment
  • [C#] 如何对列表,字典等进行排序?
  • Mac 下载安装Java、maven并配置环境变量
  • 【多模态】27、Vary | 通过扩充图像词汇来提升多模态模型在细粒度感知任务(OCR等)上的效果
  • |Python新手小白低级教程|第二十章:函数(2)【包括石头剪刀布判断程序(模拟版)】
  • vue3 之 商城项目—home
  • git flow与分支管理
  • 【Linux】学习-进程信号
  • webgis后端安卓系统部署攻略
  • 【数据分享】1929-2023年全球站点的逐日平均风速数据(Shp\Excel\免费获取)
  • 【多模态大模型】视觉大模型SAM:如何使模型能够处理任意图像的分割任务?
  • Shell之sed
  • AJAX——认识URL
  • 《Docker极简教程》--Docker环境的搭建--在Linux上搭建Docker环境
  • 开源微服务平台框架的特点是什么?
  • C#系列-C#操作UDP发送接收数据(10)
  • 突破编程_C++_面试(基础知识(10))
  • 初步探索Pyglet库:打造轻量级多媒体与游戏开发利器
  • 【npm】安装全局包,使用时提示:不是内部或外部命令,也不是可运行的程序或批处理文件
  • Go 语言 for 的用法
  • 熵权法Python代码实现
  • 浏览器提示ERR_SSL_KEY_USAGE_INCOMPATIBLE解决