力扣精选100道——外观数列(模拟专题)

外观数列算法题链接

🚩了解题意

该题的下面充分的给你说明了这个题目的意思。 3  3  2  2   2   5   1 我们根据我们正常读的顺序读

俩个3 三个2 一个5 一个1

连起来就是 2 3  3  2  1  5  1 这就是最终输出的字符串。

题目开头说了,我们最初是 1开始读取。

样例是n=4,
那么我们读取4是 1211,我们读取1 只有一个1 
那么2对应的值就是11(1个1的转换),
那么3就是21(2个1的转换),
4就是1211(一个2一个1的转换)

如果遇到连续相同的数字 ,我们需要总读,如果1112,我们不能三个1分开读,一个1一个1一个1一个2,这样的结果不还是1112吗,不能重复读,我们需要将连续相同的1的个数先弄清楚,1112中连续相同的1是三个,2是单独就1个。如果出现11123311,这种1不是连续的我们不用加,我们只要连续相同的,不是连续的后续出现了相同的数字也是分开读了。 

所以11123311 应该读成 3个1 一个2 俩个3 俩个1.


🚩算法原理

其实从上面了解题意的过程中,我们发现一个地方

如果遇到连续相同的数字 ,需要将连续相同的数字对应的个数相加然后读。

我们针对n=5来进行思考,一组数组,我们看到有三个1,那么我们就需要写成【3 1】,然后继续接下来是2个2 ,我们就得写成【2 2】,后面是1个1,我们学成【1 1】.我们注意到,最终得到的【】花括号里前面一个数是连续相同数字的个数,后面一个数是当前的数字

前面一个数是记录连续相同数字的个数,后面的数是记录当前的数,那么我们这一题很明显是用双指针,left和right都是从0开始,遇到相同的数,right++,直到遇到不同的数,我们获取的连续相同的数字长度是right-left,然后left对应的值就是【】右边代表当前的数字,right-left就是几个,left对应的值就是几,几个几,就是这样读。然后left直接更新到right即可,然后继续循环,直到right大于这个字符串的长度即可。

right一直++,遇到right对应的值不等于left对应的值的时候,我们就更新结果,本题是数字字符,需要用到to_string将数字转成字符串,right-left=3转换成 "3",然后记录left对应的值,"3"+"1";

此时我们将left移到right对应的位置进行继续让right继续++判断。


我们的right不能一直++,到了字符串长度截至,所以我们再判断的时候,也需要加上right的移动范围的限制。


🚩实现代码

class Solution {
public:string countAndSay(int n) {string ret="1";//起初设置字符串是1for(int i=1;i<n;i++){string tmp;//设置临时的字符串for(int left=0,right=0;right<ret.size();){while(right<ret.size() && ret[left]==ret[right])right++;//如果left和right对应的值相等,那么right++tmp+=to_string(right-left)+ret[left];//直到不相等,我们就将数字转字符right-left代表有几个相同的,再加上ret的left对应的值left=right;//然后将right给left继续循环}ret=tmp;}return ret;}
};

前行的路上,永远做自己光。

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

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

相关文章

板块一 Servlet编程:第五节 Cookie对象全解 来自【汤米尼克的JAVAEE全套教程专栏】

板块一 Servlet编程&#xff1a;第五节 Cookie对象全解 一、什么是CookieCookie的源码 二、Cookie的具体操作&#xff08;1&#xff09;创建Cookie&#xff08;2&#xff09;获取Cookie&#xff08;3&#xff09;设置Cookie的到期时间&#xff08;4&#xff09;设置Cookie的路径…

【ArcGIS】利用高程进行坡度分析:区域面/河道坡度

在ArcGIS中利用高程进行坡度分析 坡度ArcGIS实操案例1&#xff1a;流域面上坡度计算案例2&#xff1a;河道坡度计算2.1 案例数据2.2 操作步骤 参考 坡度 坡度是地表单元陡缓的程度&#xff0c;通常把坡面的垂直高度和水平距离的比值称为坡度。 坡度的表示方法有百分比法、度数…

计算机网络面经-TCP三次握手一文说清

目录 说一下TCP的三次握手&#xff1f; 为什么要三次握手&#xff1f;两次行不行&#xff1f;四次呢&#xff1f; 为什么建立连接是三次握手&#xff0c;关闭连接确是四次挥手呢&#xff1f; TCP四次挥手的过程&#xff1f; 如果已经建立了连接&#xff0c;但是客户端突然出…

TSL四次握手

HTTPS 常用的密钥交换算法有两种&#xff0c;分别是 RSA 和 ECDHE 算法。 其中&#xff0c;RSA 是比较传统的密钥交换算法&#xff0c;它不具备前向安全的性质&#xff0c;因此现在很少服务器使用的。而 ECDHE 算法具有前向安全&#xff0c;所以被广泛使用。 1. ECDHE算法 1.…

PostgreSQL如何使用UUID

离线安装时&#xff0c;一般有四个包&#xff0c;都安装的话&#xff0c;只需要开启uuid的使用即可&#xff0c;如果工具包(即 postgresql11-contrib&#xff09;没有安装的话&#xff0c;需要单独安装一次&#xff0c;再进行开启。 开启UUID方法 下面介绍一下如何开启&#…

ELK介绍以及搭建

基础环境 hostnamectl set-hostname els01 hostnamectl set-hostname els02 hostnamectl set-hostname els03 hostnamectl set-hostname kbased -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config systemctl stop firewalld & systemctl disable firewalld# 安…

互联设备-中继器-路由器等

网卡的主要作用 1 在发送方 把从计算机系统要发送的数据转换成能在网线上传输的bit 流 。 2 在接收方 把从网线上接收来的 bit 流重组成计算机系统可以 处理的数据 。 3 判断数据是否是发给自己的 4 发送和控制计算机系统和网线数据流 计算机的分类 1、台式机 2、小型机和服…

亿道丨三防平板丨加固平板丨为零售业提供四大优势

随着全球经济的快速发展&#xff0c;作为传统行业的零售业也迎来了绝佳的发展机遇&#xff0c;在互联网智能化的大环境下&#xff0c;越来越多的零售企业选择三防平板电脑作为工作中的电子设备。作为一种耐用的移动选项&#xff0c;三防平板带来的不仅仅是坚固的外壳。坚固耐用…

计算机网络面经-从浏览器地址栏输入 url 到显示主页的过程?

大概的过程比较简单&#xff0c;但是有很多点可以细挖&#xff1a;DNS解析、TCP三次握手、HTTP报文格式、TCP四次挥手等等。 DNS 解析&#xff1a;将域名解析成对应的 IP 地址。TCP连接&#xff1a;与服务器通过三次握手&#xff0c;建立 TCP 连接向服务器发送 HTTP 请求服务器…

模型 KISS复盘法

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_总纲目录。重在提升认知。反思过去&#xff0c;不断进步。 1 KISS复盘法的应用 1.1 团队项目复盘 在一个团队项目结束后&#xff0c;团队成员可以使用KISS模型进行复盘&#xff0c;以总结经验教训并改进未来的工作…

Web3之光:揭秘数字创新的未来

随着数字化时代的深入发展&#xff0c;Web3正以其独特的技术和理念&#xff0c;为我们打开数字创新的崭新视角。作为数字化时代的新兴力量&#xff0c;Web3将深刻影响着我们的生活、工作和社会。本文将揭秘Web3的奥秘&#xff0c;探讨其在数字创新领域的前景和潜力。 1. 重新定…

HTTP 与 HTTPS-HTTP 解决了 HTTP 哪些问题?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP 解决了 HTTP 哪些问题? HTTP 由于是明文传输&#xff0c;所以安全上存在以下三个风险: 窃听风险&#xff0c;比如通信链路上可以获取通信内容&#xff0c;用户号容易没。篡改风险&#xff0c;比如…

Spark: a little summary

转眼写spark一年半了&#xff0c;从之前写机器学习组件、做olap到后面做图计算&#xff0c;一直都是用的spark&#xff0c;惭愧的是没太看过里面的源码。这篇文章的目的是总结一下Spark里面比较重要的point&#xff0c;重点部分会稍微看一下源代码&#xff0c;因为spark是跟cli…

(done) 矩阵的对角化,以及是否可对角化的判断、还有对角化的本质。相似对角化计算过程

相似对角化 和 对角化 很大程度上是一回事 甚至判断两个矩阵的相似性&#xff0c;也跟对角化有很大关系 参考视频1&#xff1a;https://www.bilibili.com/video/BV1PA411T7b5/?spm_id_from333.788&vd_source7a1a0bc74158c6993c7355c5490fc600 参考视频2&#xff1a;http…

在 Jupyter Notebook 中查看所使用的 Python 版本和 Python 解释器路径

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 我们在做 Python 开发时&#xff0c;有时在我们的服务器上可能安装了多个 Python 版本。 使用 conda info --envs 可以列出所有的 conda 环境。当在 Linux 服务器上使用 which python 命令时&#xff0…

解决IDEA中Maven下载依赖包过慢或报错的问题

由于公司项目迭代&#xff0c;越来越多的项目开始转型新版本&#xff0c;由于我对Java一直不感冒&#xff0c;但要顺应公司项目要求&#xff0c;遂自己要逐步开始完善Java相关的知识层面&#xff0c;此篇是我在学习SpringBoot时对一些不懂地方及遇到问题时的记录。 学习视频链…

ChatGPT plus 的平替:9个可以联网的免费AI搜索引擎

ChatGPT plus 的平替&#xff1a;9个可以联网的免费AI搜索引擎。 由于ChatGPT 训练数据截止到2021年9月&#xff0c;在该时间点之后发生的事件&#xff0c;ChatGPT均无法给出答复。所以&#xff0c;大家现在都非常期待ChatGPT能够联网&#xff0c;访问实时的信息。 ChatGPT pl…

详解编译和链接!

目录 1. 翻译环境和运行环境 2. 翻译环境 2.1 预处理 2.2 编译 2.3 汇编 2.4 链接 3. 运行环境 4.完结散花 悟已往之不谏&#xff0c;知来者犹可追 创作不易&#xff0c;宝子们&#xff01;如果这篇文章对你们…

如何用壁纸讲述你的墙故事?

1、方小童在线工具集 网址&#xff1a; 方小童 该网站是一款在线工具集合的网站&#xff0c;目前包含PDF文件在线转换、随机生成美女图片、精美壁纸、电子书搜索等功能&#xff0c;喜欢的可以赶紧去试试&#xff01;

Linux Android USB gadget(从设备驱动)

Linux Android USB gadget 一:Linux usb gadget 与 Android Composite Gadget二:原生方式和Android方式如何配置函数调用逻辑内核配置原生驱动android驱动三:mass_storage配置虚拟化U盘四:遍历usb设备五:adb usb判断usb设备为adb获取adb配置信息adb设备序列号发送与接收《Linux…