面试经典150题(20)

leetcode 150道题 计划花两个月时候刷完,今天(第八天)完成了1道(20)150:

这个题花了我快 2个小时。。。

20:(6. N 字形变换)题目描述:

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:
P   A   H   N
A P L S I I G
Y   I   R
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。
示例 2:
输入:s = "PAYPALISHIRING", numRows = 4
输出:"PINALSIGYAHRPI"
解释:
P     I    N
A   L S  I G
Y A   H R
P     I

第一版(就写了一版,我看解题也是模拟好像,就是模拟找规律的题)

class Solution {public String convert(String s, int numRows) {int len=s.length();if(len==1||numRows==1||len<=numRows){return s;}StringBuilder sb=new StringBuilder();int index=0;int count=(numRows-1)*2;// 第一行 直接算间隔 就可以int num=len%count==0?len/count:(len/count)+1;for(int i=0;i<num;i++){sb.append(s.charAt(index));index+=count;}// 中间需要特殊处理 也是有规律的//,但是需要每次重置起始位置index=0;for(int i=1;i<numRows-1;i++){int inCount=(numRows-i-1)*2;int inIndex=i;while(inIndex<len){int temp=inIndex+count;for(int j=0;j<2;j++){if(inIndex>=len){break;}sb.append(s.charAt(inIndex));inIndex+=inCount;}//重置起始位置inIndex=temp;}}// 最后一行 也是直接算间隔 就可以index=numRows-1;for(int i=0;i<num;i++){sb.append(s.charAt(index));if(index+count>=len){break;}index+=count;}return sb.toString();}
}

今天这个题搞得时间太长了。。只写了一道题,明天加油!!
早日跳槽!!!这道题对我来说真的不容易,可以说汗流浃背。。

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

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

相关文章

Linux 之 性能优化

uptime $ uptime -p up 1 week, 1 day, 21 hours, 27 minutes$ uptime12:04:11 up 8 days, 21:27, 1 user, load average: 0.54, 0.32, 0.23“12:04:11” 表示当前时间“up 8 days, 21:27,” 表示运行了多长时间“load average: 0.54, 0.32, 0.23”“1 user” 表示 正在登录…

cfa一级考生复习经验分享系列(二)

本人学历背景&#xff1a;毕业于普通二本学校&#xff0c;本科专业为金融学&#xff0c;所以还算是有一定的基础&#xff0c;今年19年6月份参加了cfa一级的考试&#xff0c;最终通过了一级的考试&#xff0c;虽然成绩一般&#xff0c;但是已经知足了&#xff0c;因为自己复习的…

在接口实现类中,加不加@Override的区别

最近的软件构造实验经常需要设计接口&#xff0c;我们知道Override注解是告诉编译器&#xff0c;下面的方法是重写父类的方法&#xff0c;那么单纯实现接口的方法需不需要加Override呢&#xff1f; 定义一个类实现接口&#xff0c;使用idea时&#xff0c;声明implements之后会…

cfa一级考生复习经验分享系列(三)

从总成绩可以看出&#xff0c;位于90%水平之上&#xff0c;且置信区间全体均高于90%线。 从各科目成绩可以看出&#xff0c;所有科目均位于90%线上或高于90%线&#xff0c;其中&#xff0c;另类与衍生、公司金额、经济学、权益投资、固定收益、财报分析表现较好&#xff0c;目测…

芯知识 | 什么是可重复擦写(Flash型)语音芯片?

什么是可重复擦写&#xff08;Flash型&#xff09;语音芯片&#xff1f; 可重复擦写&#xff08;Flash型&#xff09;语音芯片是一种嵌入式语音存储解决方案&#xff0c;采用了Flash存储技术&#xff0c;使得语音内容能够被多次擦写、更新&#xff0c;为各种嵌入式系统提供了灵…

QEMU源码全解析 —— virtio(1)

接前一篇文章&#xff1a; 本文内容参考&#xff1a; 《趣谈Linux操作系统》 —— 刘超&#xff0c;极客时间 《QEMU/KVM》源码解析与应用 —— 李强&#xff0c;机械工业出版社 特此致谢&#xff01; virtio简介 对于一台虚拟机而言&#xff0c;除了要虚拟化CPU和内存&…

.360勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言&#xff1a; 在数字化时代&#xff0c;.360勒索病毒如影随形&#xff0c;威胁个人和组织的数据安全。本文将深入介绍.360病毒的特征、威胁&#xff0c;以及如何有效地恢复被加密的数据文件&#xff0c;同时提供预防措施&#xff0c;助您更好地保护数字资产。如不幸感染这…

原生小程序中对特定数据进行计算(wxml中wxs的使用)

背景&#xff1a;商品详情页对好评数进行统计&#xff0c;但是现在只有商品数据 使用wxs编写方法&#xff0c;module.exports导出&#xff0c;wxml中使用module名进行获取{{goodsRate.getRate(goodsInfoList)}} <wxs module"goodsRate">module.exports {get…

一站式查询热门小程序排名,助力小程序运营决策

如今小程序数量激增,竞争日益激烈,如何能在众多同类小程序中脱颖而出,提高曝光度与下载量,是每一个小程序运营者都极为关心的问题。对此,及时准确地查询自己小程序的热门排名,分析强劲对手,找出自己的短板,都是提高小程序竞争力的重要一环。那我们该如何方便快捷地查询到这些关…

Java通过documents4j和libreoffice把word转为pdf

文章目录 word转pdf的相关第三方jar说明Linux系统安装LibreOffice在线安装离线安装word转pdf验证 Java工具类代码 word转pdf的相关第三方jar说明 docx4j 免费开源、稍微复杂点的word&#xff0c;样式完全乱了&#xff0c;且xalan升级为2.7.3后会报错。poi 免费开源、官方文档少…

DNS:从域名解析到网络连接

目录 解密 DNS&#xff1a;从域名解析到网络连接的不可或缺 1. DNS的基本工作原理 1.1 本地解析器查询 1.2 递归查询 1.3 迭代查询 1.4 TLD 查询 1.5 权威 DNS 查询 2. DNS的重要性与作用 2.1 地址解析与负载均衡 2.2 网络故障处理与容错 2.3 安全性与防护 3. DNS的…

Flink 流处理流程 API详解

流处理API的衍变 Storm&#xff1a;TopologyBuilder构建图的工具&#xff0c;然后往图中添加节点&#xff0c;指定节点与节点之间的有向边是什么。构建完成后就可以将这个图提交到远程的集群或者本地的集群运行。 Flink&#xff1a;不同之处是面向数据本身的&#xff0c;会把D…

PyTorch 的 10 条内部用法

欢迎阅读这份有关 PyTorch 原理的简明指南[1]。无论您是初学者还是有一定经验&#xff0c;了解这些原则都可以让您的旅程更加顺利。让我们开始吧&#xff01; 1. 张量&#xff1a;构建模块 PyTorch 中的张量是多维数组。它们与 NumPy 的 ndarray 类似&#xff0c;但可以在 GPU …

【springboot】【easyexcel】excel文件读取

目录 pom.xmlExcelVo逐行读取并处理全部读取并处理向ExcelListener 传参 pom.xml <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version> </dependency>ExcelVo 字段映射…

基于 Webpack5 Module Federation 的业务解耦实践

前言 本文中会提到很多目前数栈中使用的特定名词&#xff0c;统一做下解释描述 dt-common&#xff1a;每个子产品都会引入的公共包(类似 NPM 包) AppMenus&#xff1a;在子产品中快速进入到其他子产品的导航栏&#xff0c;统一维护在 dt-common 中&#xff0c;子产品从 dt-com…

c/c++ | 少量内存溢出不会影响程序的正常运行

常见 通过指针 获得 字符串“aaaaaaaaaaaaaaaaaaaaaaaaaaa” 数据&#xff0c;然后通过strcpy 拷贝到对象 char str1[5] 中&#xff0c;事实是造成了内存溢出&#xff0c;但是 &#xff0c;最后 str1 打印输出的结果 是上面的 “aaaaaaaaaaaaaaaaaaaaaaaaaaa” 这是不正常的&am…

Draw.io or diagrams.net 使用方法

0 Preface/Foreword 在工作中&#xff0c;经常需要用到框图&#xff0c;流程图&#xff0c;时序图&#xff0c;等等&#xff0c;draw.io可以完成以上工作。 official website:draw.io 1 Usage 1.1 VS code插件 draw.io可以扩展到VS code工具中。

百度搜索展现服务重构:进步与优化

作者 | 瞭东 导读 本文将简单介绍搜索展现服务发展过程&#xff0c;以及当前其面临的三大挑战&#xff1a;研发难度高、架构能力欠缺、可复用性低&#xff0c;最后提出核心解决思路和具体落地方案&#xff0c;期望大家能有所收货和借鉴。 全文4736字&#xff0c;预计阅读时间12…

产品入门第四讲:Axure动态面板

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​​​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Axure》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还…

若要接收后续 Google Chrome 更新,您需使用 Windows 10 或更高版本

无差别提示&#xff0c;每次浏览器只提示&#xff0c;未提供关闭按钮 “若要接收后续 Google Chrome 更新&#xff0c;您需使用 Windows 10 或更高版本。该计算机目前使用的是 Windows 7。” 管用&#xff0c;不清楚原理 如何关闭“若要接收后续 google chrome 更新,您需使用 …