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

leetcoe刷题日志-6N字形变换

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

比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:
在这里插入图片描述
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。

请你实现这个将字符串进行指定行数变换的函数:

string convert(string s, int numRows);

示例 1

输入:s = “PAYPALISHIRING”, numRows = 3
输出:“PAHNAPLSIIGYIR”
示例 2
输入:**s = “PAYPALISHIRING”, numRows = 4
输出:“PINALSIGYAHRPI”
解释:
在这里插入图片描述

示例 3

输入:s = “A”, numRows = 1
输出:“A”

这道题没想出来,看了题解
在这里插入图片描述

class Solution {
    public String convert(String s, int numRows) {
      if(numRows<2) return s;
      List<StringBuilder> rows = new ArrayList<StringBuilder>();
      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();
    }
}

作者:Krahets
链接:https://leetcode.cn/problems/zigzag-conversion/solutions/21610/zzi-xing-bian-huan-by-jyd/


http://www.kler.cn/a/132975.html

相关文章:

  • SpringBoot+React养老院管理系统 附带详细运行指导视频
  • 微服务即时通讯系统的实现(客户端)----(2)
  • LLaMA-Factory全流程训练模型
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十四,总结编码过程,从摄像头获得数据后,转成AVFrame,然后再次转成AVPacket,
  • 物理hack
  • 详解map与multimap容器
  • 【数据结构初阶】链表OJ
  • 经典ctf ping题目详解 青少年CTF-WEB-PingMe02
  • 某60区块链安全之重入漏洞实战记录
  • 整理MLAI学习路径图
  • centos7中安装Nginx和使用Nginx详细操作
  • MATLAB算法实战应用案例精讲-【图像处理】图像识别分类
  • # Python基础:输入输出详解-读写文件(还需完善)
  • python算法例15 合并数字
  • 三十二、W5100S/W5500+RP2040树莓派Pico<UPnP示例>
  • 优化|优化求解器自动调参
  • C/C++数据结构之中缀表达式转换为后缀表达式,删除堆栈元素
  • requests库进行爬虫ip请求时遇到的错误解决方法
  • 微服务学习 | Eureka注册中心
  • SVG的viewBox、width和height释义, 示例及代码
  • CMSIS-RTOS在stm32使用
  • linux运行java程序
  • 卷积神经网络(CNN)多种图片分类的实现
  • 21、Flink 的table API与DataStream API 集成(完整版)
  • 01_面向对象高级_static
  • MySQL/Oracle用逗号分割的id怎么实现in (逗号分割的id字符串)。find_in_set(`id`, ‘1,2,3‘) 函数,