LeetCode 6. Z 字形变换

题目链接https://leetcode.cn/problems/zigzag-conversion/description/

将一个给定字符串 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"
class Solution {public String convert(String s, int numRows) {if(numRows==1){return s;}//3行就创建大小为3的数组,并初始化都为空(不写下边这个for循环=""的话,会含null)String[] ans = new String[numRows];for(int i=0;i<numRows;i++){ans[i] = "";}//调用函数int flag = 1;dfs(numRows,0,s,0,ans,flag);//根据数组生成结果String res = "";for(int i=0;i<numRows;i++){res += ans[i];}return res;}public void dfs(int numRows,int index,String s,int cur,String[] ans,int flag){if(index >= s.length()){return;}//出口//添加char c = s.charAt(index);ans[cur] = ans[cur] + c;//转向if(cur == 0){flag=1;}else if(cur == numRows-1){flag=-1;}//执行下一个dfs(numRows, index+1, s, cur + flag, ans, flag);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/474871.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JUC并发编程

JUC并发编程 JUC概述 JUC是java.util.concurrent包的简称&#xff0c;即Java并发编程工具包&#xff0c;目的是为了更好地支持高并发任务&#xff0c;让开发者进行多线程编程时有效减少竞争条件和死锁线程。 并发编程 一些基本概念&#xff1a; 进程与线程&#xff1a; 进…

Linux常见指令(一)

目录 一、基本指令 1.1ls指令 1.2pwd指令 1.3cd指令 1.4touch指令 1.5mkdir指令 1.6rmdir指令、rm指令 1.7man指令 1.8cp指令 1.9mv指令 1.10cat 一、基本指令 1.1ls指令 语法 &#xff1a; ls [ 选项 ][ 目录或文件 ] 功能&#xff1a;对于目录&#xff0c;该命令…

公众号主体申请上限怎么提高

一般可以申请多少个公众号&#xff1f;自2018年11月16日起&#xff0c;进行申请上限调整&#xff1a;1、同一个邮箱只能申请1个公众号&#xff1b;2、同一个手机号码可绑定5个公众号&#xff1b;3、同一身份证申请个人类型公众号数量上限为1个&#xff1b;4、同一企业、个体工商…

论文精读--MAE

BERT在Transformer的架构上进行了掩码操作&#xff0c;取得了很好的效果。如果对ViT进行掩码操作呢&#xff1f; 分成patch后灰色表示遮盖住&#xff0c;再将可见的patch输入encoder&#xff0c;把encoder得到的特征拉长放回原本在图片中的位置&#xff0c;最后由decoder去重构…

【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(3)数据准备初步

今天来学习数据准备。 一个AI项目要包括构建数据集、数据清理和数据融合、数据采集、特征工程、算法改进和其他步骤。 数据采集和数据清洗&#xff0c;也就是数据准备&#xff0c;要占到人工智能项目一半以上的工作量。 训练的数据量越大&#xff0c;模型越准确。 建立数据标…

vue自定义指令(图文示例)

第085个 查看专栏目录: VUE 本文章目录 示例效果图示例源代码API 参考网址 Vue 自定义指令是一种用于扩展 Vue 模板功能的强大工具。通过自定义指令&#xff0c;你可以在 Vue 模板中添加自定义的行为和逻辑&#xff0c;使模板更加灵活和可定制。 以下是对 Vue 自定义指令的详细…

【leetcode】572. 另一棵树的子树

题目链接 572. 另一棵树的子树 bool isSameTree(struct TreeNode* p, struct TreeNode* q) {if (p ! NULL && q ! NULL) {return p->val q->val // 分解比较根左右&& isSameTree(p->left, q->left)&& isSameTree(p->right, q->ri…

开发知识点-JAVA-springboot+Spring Security/Shiro

Spring Security/Shiro shiroShiro反序列化相关URLDNS链Shiro CC链Shiro CB链Shiro反序列化WAF绕过Java快速开发框架_若依——前后端分离版- 3. 登陆 springsecurity认证 Debug - postman模拟SpringBoot+SpringSecurity+dubbo图书电商后台实战-对象映射-基本属性映射SpringBoot…

【网站项目】079信息化在线教学平台

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

基于 Amazon EC2 和 Amazon Systems Manager Session Manager 的堡垒机的设计和自动化实现

1. 背景 在很多企业的技术实现中&#xff0c;由于数据安全和合规性要求&#xff0c;大部分的应用服务都部署在私有云环境或专用网络中。为了满足开发人员和运维团队从本地数据中心安全访问云上资源的需求&#xff0c;采用堡垒机作为一种有效的解决方案变得尤为重要。 堡垒机的…

C语言运算符与表达式..

1.表达式 何为表达式呢 其实就是由一个或者多个运算对象和零个或者多个运算符组成的东西 诸如&#xff1a;5 10, 5, 5之类都称得上表达式 运算符和运算对象进行运算操作以后必然有一个结果 这个结果就是该表达式的结果 何为表达式语句呢 其实就是在表达式的基础之上在其尾部…

报警监控联动VI解决方案

在安防系统集成应用过程中&#xff0c;经常遇到需要视频监控系统和防盗报警系统进行联动 的情况&#xff0c;视频与报警联动主要是指在报警发生时&#xff0c;将指定的某一路或者几路视频切换到指定显示器&#xff0c;并且调用预置位&#xff0c;显示报警发生时的图像。实现报警…