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

6. Z 字形变换(Java)

目录

  • 题目描述:
  • 输入:
  • 输出:
  • 代码实现:

题目描述:

将一个给定字符串 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);

代码调试效果图:
在这里插入图片描述

输入:

s = "PAYPALISHIRING", numRows = 3

输出:

"PAHNAPLSIIGYIR"

代码实现:

public class Main {public static void main(String[] args) {// TODO Auto-generated method stubString s = "PAYPALISHIRING";System.out.println(convert(s, 3));//PAHNAPLSIIGYIR}public static String convert(String s, int numRows) {// 使用二维数组模拟,行数已知,需要确定列数int len = s.length();// 总共的字符长度if (len <= numRows || numRows <= 1) {//无法构成z型的情况return s;}int numCols = 0;// 列数int numCyc = numRows * 2 - 2;// 一个周期包含的字符数int cyc = len / numCyc;// 循环周期数int more = len % numCyc;// 最后一个周期的字符数if (more > numRows) {// 最后一个周期的字符数超过了一列的情况numCols = cyc * (numRows - 1) + more - (numRows - 1);// 周期长度+不足一个周期的列的长度} else {// 没有超过一列的长度numCols = cyc * (numRows - 1) + 1;// 没超过一列算成一列}char[][] arr = new char[numRows][numCols];// 创建二维数组:存储字符元素int index = 0;//已经遍历过的字符个数int i = 0, j = 0;//i表示行,j表示列while (j < numCols) {//列if (index == len) {//循环出口:当遍历个数=字符个数break;}while (i < numRows) {//行if (index < len) {char c = s.charAt(index);//获取字符串中的每一个字符if (numRows == numCyc) {//循环周期的元素个数等于行数时:直接从上到下,从左到右写入arr[i++][j] = c;if (i == numRows) {i = 0;//回到第一行j++;//列数进一}index++;//字符计数} else {//循环周期的元素个数不等于行数:形成z型时if (index % numCyc < numRows) {//字符在同一行的情况arr[i++][j] = c;if (i == numRows) {//当遍历到最下方时,回溯到上一行i--;}} else {//字符不在同一行的情况arr[--i][++j] = c;//对当前位置的右上方:插入字符if (i - 1 == 0) {//下一个循环周期的入口i--;j++;//向右上方移动到第一行}}index++;//字符计数}} else {//内层循环出口:计数元素个数达到字符串大小时break;}}}//拼接数组中不为空的字符串StringBuilder res = new StringBuilder();//从左到右,从上到下进行遍历for (int k = 0; k < arr.length; k++) {for (int l = 0; l < arr[k].length; l++) {if (arr[k][l] != '\0') {//ASCII码不为0的字符,才进行拼接res.append(arr[k][l]);}}}return res.toString();//转化为字符串}
}

相关文章:

6. Z 字形变换(Java)

目录 题目描述&#xff1a;输入&#xff1a;输出&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时&#xff0c;排列如…...

【Linux入门】用户的基本指令

Linux操作系统又被称之为“核心&#xff08;kernel&#xff09;” 。但一般的用户&#xff0c;不能直接使用kernel&#xff0c;而要通过kernel的“外壳”程序——命令行解释器shell&#xff0c;来与 kernel 沟通。这是因为 kernel 对于一般的用户来说太过复杂&#xff0c;且不让…...

3.9 Python格式化字符串

Python格式化字符串&#xff08;格式化输出&#xff09; 我们之前讲到过 print() 函数的用法&#xff0c;这只是最简单最初级的形式&#xff0c;print() 还有很多高级的玩法&#xff0c;比如格式化输出&#xff0c;这就是本节要讲解的内容。 熟悉C语言 printf() 函数的读者能够…...

Linux驱动学习:从Linux主机nfs共享文件到uboot

第一步&#xff1a;在Linux主机上开启NFS服务&#xff0c;使用如下命令安装NFS服务&#xff1a; sudo apt-get install nfs-kernel-server rpcbind 第二步&#xff1a;创建一个文件夹用于共享&#xff0c;直接以nfs命名就行&#xff1a; 第三步&#xff1a;打开nfs服务配置文…...

Linux下场景模拟--cpu、内存打满测试

Linux下场景模拟–cpu、内存打满测试 打满CPU占用 编写脚本vi /root/cpu_run_full.sh vi /root/cpu_run_full.sh填写如下内容&#xff1a; #!/bin/bash function while_run_cpu() {while true;doi2;done }function cpu_full() {for ((i0; i<$1; i));dowhile_run_cpu &am…...

Vue中watch与计算属性computed

最近&#xff0c;写vue代码&#xff0c;判断父组件传来的type来作为条件判断&#xff0c;并用v-if v-else来控制页面展示。 起初用watch监听了type&#xff0c;发现值改变了&#xff0c;但是写在data配置项的visible属性书写错误&#xff0c;未实现响应式&#xff0c;如下&…...

nginx部署前端教程

目录 一、前言二、部署三、注意四、参考 一、前言 一般来说现在的软件项目&#xff0c;都是分用户端以及管理端的&#xff0c;并且是前后端分离的&#xff0c;这里我来记录一下部署两个前端的教程。 部署前端之前需要的准备工作是部署springBoot后端程序&#xff0c;这里我do…...

设计模式:工厂模式

定义 工厂模式&#xff08;Factory Pattern&#xff09;&#xff0c;特别是工厂方法模式&#xff08;Factory Method Pattern&#xff09;&#xff0c;是一种创建型设计模式&#xff0c;它定义了一个创建对象的接口&#xff0c;但将实例化的类推迟到子类中进行。这样&#xff…...

系统监测工具-tcpdump的使用

一个简单的tcpdump抓包过程。主要抓包观察三次握手&#xff0c;四次挥手的数据包 有两个程序&#xff1a;客户端和服务器两个程序 服务器端的ip地址使用的是回环地址127.0.0.1 端口号使用的是6000 tcpdump -i 指定用哪个网卡等&#xff0c;dstip地址端口指定抓取目的地址…...

Java智慧校园系统源码 微信小程序+电子班牌

Java智慧校园系统源码 微信小程序电子班牌 通过设备管理对百纳智慧校园的智慧班牌以及百纳智慧屏&#xff08;校牌&#xff09;进行统一集中式管理&#xff0c;支持浏览所有设备的基本信息以及在离线状态&#xff0c;支持添加设备、设备一键开关机、一键重启、设置节假日开关机…...

OpenAI Sora:浅析文生视频模型Sora以及技术原理简介

一、Sora是什么&#xff1f; Sora官方链接&#xff1a;https://openai.com/sora 视频模型领头羊Runway Gen 2、Pika等AI视频工具&#xff0c;都还在突破几秒内的连贯性&#xff0c;而OpenAI&#xff0c;已经达到了史诗级的纪录。 OpenAI&#xff0c;永远快别人一步&#xff0…...

canal部署

定义 canal组件是一个基于mysql数据库增量日志解析&#xff0c;提供增量数据订阅和消费&#xff0c;支持将增量数据投递到下游消费者&#xff08;kafka&#xff0c;rocketmq等&#xff09;或者存储&#xff08;elasticearch,hbase等&#xff09;canal感知到mysql数据变动&…...

001集——在线网络学习快速完成——16倍速度

在线网络学习快进方法如下&#xff1a; 电脑下载 Microsoft edge 浏览器&#xff0c;有的电脑是自带的 1、点击右上角… 2、点击"扩展" 3、点击"管理扩展" 4、点击"获取 Microsoft edge 扩展" 5、搜索框里搜" global " 6、获取"…...

golang web 开发 —— gin 框架 (gorm 链接 mysql)

目录 1. 介绍 2. 环境 3. gin 3.1 gin提供的常见路由 3.2 gin的分组 main.go router.go 代码结构 3.3 gin 提供的Json方法 main.go route.go common.go user.go order.go 3.4 gin框架下如何获取传递来的参数 第一种是GET请求后面直接 /拼上传递的参数 第二种是…...

区块链相关概念

区块链是什么&#xff0c;就算是做计算机技术开发的程序员&#xff0c;100个当中都没有几个能把这个概念理解明白&#xff0c;更不要说讲清楚了。那对于普通人来说&#xff0c;就更扯了。 除了“挖矿”表面意思似乎比较好理解外&#xff0c;其他的基础概念真TMD绕。 去中心化、…...

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑灵活爬坡产品的虚拟电厂两阶段分布鲁棒优化运营策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…...

2.k8s架构

目录 k8s集群架构 控制平面 kube-apiserver kube-scheduler etcd kube-controller-manager node 组件 kubelet kube-proxy 容器运行时&#xff08;Container Runtime&#xff09; cloud-controller-manager 相关概念 k8s集群架构 一个Kubernetes集群至少包含一个控制…...

xss.pwnfunction-Ligma

首先用jsFuckhttps://jsfuck.com/ [][(![][])[[]](![][])[![]![]](![][])[![]](!![][])[[]]][([][(![][])[[]](![][])[![]![]](![][])[![]](!![][])[[]]][])[![]![]![]](!![][][(![][])[[]](![][])[![]![]](![][])[![]](!![][])[[]]])[![][[]]]([][[]][])[![]](![][])[![]![]!…...

分布式限流——Redis实现令牌桶算法

令牌桶算法 令牌桶算法&#xff08;Token Bucket Algorithm&#xff09;是一种广泛使用的流量控制&#xff08;流量整形&#xff09;和速率限制算法。这个算法能够控制网络数据的传输速率&#xff0c;确保数据传输的平滑性&#xff0c;防止网络拥堵&#xff0c;同时也被应用于…...

鸿蒙原生应用已超4000个!

鸿蒙原生应用已超4000个&#xff01; 来自 HarmonyOS 微博近期消息&#xff0c;#鸿蒙千帆起# 重大里程碑&#xff01;目前已有超4000个应用加入鸿蒙生态。从今年1月18日华为宣布首批200多家应用厂商正在加速开发鸿蒙原生应用&#xff0c;到3月底超4000个应用&#xff0c;短短…...

manga-ocr漫画日文ocr

github 下载 解压 anaconda新建环境 conda create -n manga_ocr python3.8 激活环境 conda activate manga_ocr cd到解压目录 cd /d manga-ocr-master 安装依赖包 pip install -r requirements.txt pip3 install manga-ocr 下载离线model huggingface 123云盘 解压到一个目录…...

STL、Vector和Set的讲解和例题分析

STL STL&#xff08;Standard Template Library&#xff0c;标准模板库&#xff09;是C标准库的一部分&#xff0c;它提供了一系列通用的编程组件&#xff0c;包括容器、迭代器、算法和函数对象等。STL是C中实现泛型编程的核心&#xff0c;它允许程序员使用模板编写与数…...

Android 13 aosp hiddenapi config

Android 11 hiddenapi路径 frameworks/base/config/hiddenapi-greylist-packages.txtAndroid 13 hiddenapi路径 frameworks/base/boot/hiddenapi/hiddenapi-unsupported-packages.txt...

数据仓库面试总结

文章目录 1.什么是数据仓库&#xff1f;2.ETL是什么&#xff1f;3.数据仓库和数据库的区别&#xff08;OLTP和OLAP的区别&#xff09;4.数据仓库和数据集市的区别5.维度分析5.1 什么是维度&#xff1f;5.2什么是指标&#xff1f; 6.什么是数仓建模&#xff1f;7.事实表7.维度表…...

git Failed to connect to 你的网址 port 8282: Timed out

git Failed to connect to 你的网址 port 8282: Timed out 出现这个问题的原因是&#xff1a;原来的仓库换了网址&#xff0c;原版网址不可用了。 解决方法如下&#xff1a; 方法一&#xff1a;查看git用户配置是否有如下配置 http.proxyhttp://xxx https.proxyhttp://xxx如果…...

[C++][算法基础]堆排序(堆)

输入一个长度为 n 的整数数列&#xff0c;从小到大输出前 m 小的数。 输入格式 第一行包含整数 n 和 m。 第二行包含 n 个整数&#xff0c;表示整数数列。 输出格式 共一行&#xff0c;包含 m 个整数&#xff0c;表示整数数列中前 m 小的数。 数据范围 1≤m≤n≤&#x…...

备考ICA----Istio实验15---开启 mTLS 自动双向认证实验

备考ICA----Istio实验15—开启mTLS自动双向认证实验 在某些生成环境下,我们希望微服务和微服务之间使用加密通讯方式来确保不被中间人代理. 默认情况下Istio 使用 PERMISSIVE模式配置目标工作负载,PERMISSIVE模式时,服务可以使用明文通讯.为了只允许双向 TLS 流量&#xff0c;…...

Hive SchemaTool 命令详解

Hive schematool 是 hive 自带的管理 schema 的相关工具。 列出详细说明 schematool -help直接输入 schematool 或者schematool -help 输出结果如下&#xff1a; usage: schemaTool-alterCatalog <arg> Alter a catalog, requires--catalogLocation an…...

51单片机入门_江协科技_17~18_OB记录的笔记

17. 定时器 17.1. 定时器介绍&#xff1a;51单片机的定时器属于单片机的内部资源&#xff0c;其电路的连接和运转均在单片机内部完成&#xff0c;无需占用CPU外围IO接口&#xff1b; 定时器作用&#xff1a; &#xff08;1&#xff09;用于计时系统&#xff0c;可实现软件计时&…...

xss.pwnfunction-Ah That‘s Hawt

<svg/onloadalert%26%2340%3B1%26%2341%3B> <svg/>是一个自闭合形式 &#xff0c;当页面或元素加载完成时&#xff0c;onload 事件会被触发&#xff0c;从而可以执行相应的 JavaScript 函数...

wordpress用思源黑体/简述网络推广的方法

教程源自&#xff1a;http://www.meishij.net/jiangchangcaipu/hongshaorou_26.html 有点小心得&#xff1a;1.肉得肥瘦交叠的五花肉&#xff0c;如果用普通的带皮肉的话&#xff0c;脂肪层太厚了&#xff0c;切成小块儿后放在锅里炒尽炸成猪油了~2.肉切成1里面见方的小块儿后&…...

青岛有没有做网站的/网站关键词优化推广哪家快

对于女人来说&#xff0c;口红是不可缺少的时尚单品&#xff0c;她们能准确的说出每一支口红的色号&#xff0c;这相比于直男看口红色号是一种&#xff0c;就显得女人特别精致。女人的口红是用不完的&#xff0c;现在呢&#xff0c;我就大家说一下2019最流行的这5支口红&#x…...

上海专业网站建设价格/苏州seo网站管理

1、基于概念 epoll是一种机制&#xff0c;来处理大量并发连接时事件的读写顺序。 在linux的网络编程中&#xff0c;很长的时间都在使用select来做事件触发。2.5.X内核后&#xff0c;引入epoll。 epoll是Linux内核为处理大批量句柄而作了改进的poll&#xff0c;是Linux下多路复用…...

建设网站外国人可搜到/站长工具seo综合查询怎么使用的

1. 多任务的概念 多任务简单地说&#xff0c;就是操作系统可以同时运行多个任务。分为并行和并发两种。 1.1 并行 指的是任务数小于等于CPU核数&#xff0c;即任务真的是一起执行的 1.2 并发 指的是任务数多于CPU核数&#xff0c;通过操作系统的各种任务调度算法&#xff0c;实…...

wordpress访客和点击/百度企业查询

伴随着微信在各个年龄段人群的普及&#xff0c;公众号作为微信的官方媒介&#xff0c;成为越来越多的公司营销推广&#xff0c;商品发布的重要平台。本文用来初探微信公众号接入开发的具体流程。 1&#xff0c;注册公众号&#xff0c;并进行微信认证&#xff0c;一般是企业用户…...

科技馆网站建设方案/拼多多seo怎么优化

2019独角兽企业重金招聘Python工程师标准>>> Android系统中自带的图标&一些预定义样式&Android 系统颜色值 Android系统中自带了很多图标&#xff0c;我们的程序可以方便使用。 Android™ 1.5 android.R.drawable Icon Resources http://since2006.com/andr…...