【LeetCode: Z 字形变换 + 模拟】

news2024/11/18 13:41:26

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述
在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ 模拟
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 6. 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”

提示:

1 <= s.length <= 1000
s 由英文字母(小写和大写)、‘,’ 和 ‘.’ 组成
1 <= numRows <= 1000

🌟 求解思路&实现代码&运行结果


⚡ 模拟

🥦 求解思路
  1. 通过一个List来存储numRows个StringBuilder,然后,记录俩个变量来分别维护当前走到了第几行,以及当前的方向。如果当前没有达到开始的位置或者结束的位置,在当前行添加元素,否则,就改变方向,继续重复该过程,直接字符串的结束位置。
  2. 详细的模拟实现过程记录到了代码中,请结合代码具体学习。
  3. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
class Solution {
    public String convert(String s, int numRows) {
        if (numRows == 1)
            return s;

        List<StringBuilder> rows = new ArrayList<>();
        // 通过循环生成每一行都要进行拼接的字符串StringBuilder()
        for (int i = 0; i < Math.min(numRows, s.length()); i++)
            rows.add(new StringBuilder());

        // 记录当前是第几行
        int curRow = 0;
        // 通过一个Boolean 变量来记录此时的方向:向上 向下
        boolean goingDown = false;

        // 遍历当前是字符串的字符
        for (char c : s.toCharArray()) {
            // 每一行的StringBuilder 分别进行拼接
            rows.get(curRow).append(c);
            // 处理边界的情况 如果是第零行,直接调整方向为向下
            // 如果是最后一行, 直接调整方向为向上
            if (curRow == 0 || curRow == numRows - 1)
                goingDown = !goingDown;
            // 如果此时的方向是向下,行数++,反之 方向相反 行数--
            curRow += goingDown ? 1 : -1;
        }

        // 最后通过一个最终的循环直接将所有的结果进行拼接展示
        StringBuilder ret = new StringBuilder();
        for (StringBuilder row : rows)
            ret.append(row);
        return ret.toString();// 返回最终的结果
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(28)Linux 信号保存 信号处理 不可重入函数

首先介绍几个新的概念&#xff1a; 信号递达(Delivery)&#xff1a;实际执行信号的处理动作。信号未决(Pending)&#xff1a;信号从产生到递达之间的状态。信号阻塞(Block)&#xff1a;被阻塞的信号产生时将保持在未决状态&#xff0c;直达解除对该信号的阻塞&#xff0c;才执…

Mac本上快速搭建redis服务指南

文章目录 前言1. 查看可用版本2.安装指定版本的redis3.添加redis到PATH3.1 按照执行brew install命令后输出的提示信息执行如下命令将redis添加到PATH3.2 执行命令要添加的redis环境信息生效: 4. 增加密码4.1 在文件中找到requirepass所在位置4.2 去掉注释并将requirepass值替换…

如何免费从 Android 恢复丢失/删除的数据

随着手机的广泛使用&#xff0c;手机中可以存储的数据越来越多&#xff0c;这给我们带来了便利&#xff0c;但也在一定程度上给我们带来了一些麻烦。 通常&#xff0c;手机中存储着我们的亲朋好友的联系方式、商务消息、私人聊天、音频文件、搞笑视频、生活照片等个人信息。不…

2.【Vue3】Vue 基本使用——局部使用Vue

1. 快速入门 现在需要将 “hello vue3” 这样一个字符串渲染到页面上进行展示。 这个需求并不陌生&#xff0c;可以使用原生 JS 代码完成&#xff1a; let msg"hello vue3"; document.getElementById("元素的id属性值").innerHTMLmsg;接下来学习如何使用…

SpringBoot常见错误

SpringBoot常见错误 1、SpringBoot启动时报错 错误: 找不到或无法加载主类 com.xxx.xxx.Application springboot启动时报错错误&#xff1a;找不到或无法加载主类 com.xxx.xxx.Application。 解决方法就是打开idea的控制台&#xff0c;输入以下三行命令&#xff1a; mvn cl…

使用核模型高斯过程(KMGPs)进行数据建模

核模型高斯过程(KMGPs)作为一种复杂的工具可以处理各种数据集的复杂性。他通过核函数来扩展高斯过程的传统概念。本文将深入探讨kmgp的理论基础、实际应用以及它们所面临的挑战。 核模型高斯过程是机器学习和统计学中对传统高斯过程的一种扩展。要理解kmgp&#xff0c;首先掌握…

智能小程序页面配置、运行机制及路由

页面介绍 Page 代表应用的一个页面&#xff0c;负责页面展示和交互。每个页面对应一个子目录&#xff0c;一般有多少个页面&#xff0c;就有多少个子目录。它也是一个构造函数&#xff0c;用来指定页面的初始数据、生命周期回调、事件处理函数等。 每个小程序页面一般包含以下…

FMEA:总监和架构师都在用的高可用架构分析方法

FMEA&#xff1a;总监和架构师都在用的高可用架构分析方法 记得之前准备春晚项目的时候&#xff0c;团队成员在一起过架构&#xff0c;老板最常问的问题是“这个组件挂了怎么办?有什么影响&#xff1f;”&#xff0c;我当时还在心里默默嘀咕&#xff1a;这咋都这么容易挂呢&a…

有趣的css - 好看的呼吸灯效果

整体效果 这个效果主要用 css3 的 animation 属性来实现的。 这个效果可以用作在网站的整体 Loading&#xff0c;也可以放在网站首屏当一个 banner 的背景也是非常棒的&#xff01; 代码部分 html 部分代码&#xff1a; <div class"app"><span class&quo…

什么是git,怎样下载安装?

简介&#xff1a; 应用场景&#xff1a; 应用场景&#xff1a;团队企业开发 作用&#xff1a; 安装&#xff1a; 网址&#xff1a;Git - Downloads cmd 安装&#xff1a;winget install --id Git.Git -e --source winget

Linux之中文字体安装

一、需求说明 客户系统部署要求使用指定字体&#xff0c;该字体在linux服务器上没有&#xff0c;导致系统处理相关上传文档的时候显示乱码&#xff0c;所以我们需要在linux服务器上安装指定字体。博主实验环境&#xff1a; 操作系统&#xff1a;centos7.6安装window环境下的宋…

Nginx实现反向代理负载均衡实验

实验环境&#xff1a; VM REdhat虚拟机&#xff08;192.168.87.5&#xff09;一台、VM Redhat虚拟机&#xff08;192.168.87.3&#xff09;一台、阿里云服务器&#xff08;47.93.79.92&#xff09;一台 实验要求&#xff1a;通过windows浏览器访问192.168.87.5&#xff08;虚…

MIT_线性代数笔记:线性代数常用概念及术语总结

目录 1.系数矩阵2.高斯消元法3.置换矩阵 Permutation4.逆矩阵 Inverse5.高斯-若尔当消元法6.矩阵的 LU 分解7.三角矩阵8.正定矩阵 1.系数矩阵 线性代数的基本问题就是解 n 元一次方程组。例如&#xff1a;二元一次方程组 2 x − y 0 − x 2 y 3 \begin{align*} & 2x -…

DeepSORT算法实现车辆和行人跟踪计数和是否道路违规检测(代码+教程)

DeepSORT算法是一种用于目标跟踪的算法&#xff0c;它可以对车辆和行人进行跟踪计数&#xff0c;并且可以检测是否存在道路违规行为。该算法采用深度学习技术来提取特征&#xff0c;并使用卡尔曼滤波器来估计物体的速度和位置。 DeepSORT算法通过首先使用目标检测算法来识别出…

全国客运飞机场数据,shp/excel格式,已可视化

基本信息. 数据名称: 全国客运飞机场数据 数据格式: Shpxlsx 数据时间: 2023年 数据几何类型: 点 数据坐标系: WGS84坐标系 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1xzqhdm行政区划代码2xzqhmc行政区划名称3mc机场名称4lon经度坐…

【文本到上下文 #7】探索 NLP 中的 Seq2Seq、编码器-解码器和注意力机制

一、说明 今天&#xff0c;我们将探讨序列到序列 &#xff08;seq2seq&#xff09; 模型的复杂工作原理&#xff0c;特别关注编码器-解码器架构和注意力机制。这些概念是各种 NLP 应用的基础&#xff0c;从机器翻译到问答系统。 这是可以期待的&#xff1a; Seq2Seq模型中的编码…

小程序开发平台微同城本地生活服务小程序功能 带完整的安装以及部署教程

移动互联网的普及&#xff0c;小程序已经成为一种新的应用形态&#xff0c;为本地生活服务提供了更多的可能性。微同城作为一款本地生活服务小程序&#xff0c;致力于为当地居民提供便捷、高效的生活服务体验。罗峰给大家分享微同城本地生活服务小程序的源码开发背景以及系统的…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之CheckboxGroup组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之CheckboxGroup组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、CheckboxGroup组件 提供多选框组件&#xff0c;通常用于某选项的打开或关…

【数据分析】numpy基础第三天

前言 本文只会讲解最常用的加、减、乘、除&#xff0c;点乘&#xff08;或叫矩阵乘法&#xff09;、还有广播机制。 本文代码 链接提取码&#xff1a;1024 第1部分&#xff1a;基础数学计算 使用NumPy进行基本的数学运算是十分直观和简单的。下面我们将展示一些基本的加、…

机器学习第二十七周周报 PINNs

文章目录 week27 PINNs摘要Abstract一、监督学习二、文献阅读1. 题目2. abstract3. 偏微分方程的数据驱动解3.1连续时间模型example(Schrodinger equation)&#xff1a; 3.2离散时间模型Example (Allen–Cahn equation)&#xff1a; 4. 文献解读4.1 Introduction4.2 创新点 三、…