蓝桥杯---力扣题库第38题目解析

文章目录

  • 1.题目重述
  • 2.外观数列举例说明
  • 3.思路分析(双指针+模拟)
  • 4.代码说明

1.题目重述

外观数列实际上就是给你一串数字,我们需要对于这个数据进行一个简单的描述罢了;

2.外观数列举例说明

外观数列都是从1开始的,也就是给定的这个参数n=1的时候,我们返回的就是外观数列的第n个元素,也就是n,这个外观数列里面的元素是存在着规律的;

第一个元素就是1,但是他在我们的这个数组里面的下标是0;

第二个元素是对于第一个元素的描述,因为第一个元素是1,因此这个描述就是一个一,我们写作11,十位的1表示的就是一个,个位的1表示的就是数字1;

第三个元素是对于第二个元素的描述,第二个元素是11,我们读作2个1,写法就是21,十位上面的2表示2个,个位上面的1表示的就是数字1;

第四个元素是对于第三个元素的描述,也就是对于21的描述,这个时候的描述就是1个2,2个1,对吧,因此这个写作就是1221,这个千位的1表示的就是1个,百位的2表示的就是数字2,十位的2表示的就是2个,个位的1表示的就是数字1

综合上面的描述和分析,相信你很快就可以看懂下面的这个官方给的例子:

3.思路分析(双指针+模拟)

下面我们探讨的问题就是针对于一串数字,我们应该如何进行描述,我是使用下面的这个案例进行说明:

下面的这个数字描述应该是5个1,3个2,4个3,但是使用代码的使用,我们应该找到这个里面的规律,如何去使用Java语言对于这个里面的规律进行描述呢?

首先就是定义left,right指针,两个指针都指向第一个元素,right向右移动,直到不是1为止,因为我们需要统计这个过程中的1的个数,这个当right指向第一个二的时候,这个right下标就是5,而这个left=0,这个时候的right-left正好就是我们的1的个数,因此我们可以描述为5个1;

当这个1统计结束之后,我们需要统计2的个数,这个时候重复之前的操作:首先是让left指向我们的right这个时候指向的位置,也就是第一个2,这个时候right继续移动,直到不是2为止,这个时候right-left记录下来这个过程里面的2的个数,以此类推;

4.代码说明

1)首先初始化这个ret,如果n就是1,这个时候返回的外观数列值就是1;

2)接下来的这个for循环是从1开始的,为什么从1开始,因为假设n=2,这个时候我们只需要操作一次这个过程,因为n=1的时候默认这个返回值就是1;

ret表示的是连续相同的字符组成的这个字符串,len表示的是这个连续相同的字符组成的这个字符串的长度,因为我们需要表示是几个什么数字组成的,所以需要知道这个长度;

3)在这个双指针移动的过程中,条件就是left指向的这个字符和right是一样的,我们就让这个right++,但是这个需要防止我们的right越界,最后结束的时候right-left就是字符个数;

4)我们的这个temp.append首先加入的是连续字符的个数,其次是这个字符是什么,也就是我们的left指向的字符元素;

5)最后把这个temp转换成字符串作为返回值;

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

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

相关文章

Linux网卡配置方法

1、查看IP ip a 网卡状态 UP/down 2、查看网关 如果显示route命令未找到需要下载net-tools软件包 route -n 3、查看DNS服务器地址 DNS服务器地址会存放在/etc/resolv.conf文件中 使用cat命令可以查看 cat /etc/resolv.conf 4、修改网卡配置 方法1)编…

DeepSeek使用技巧大全(含本地部署教程)

在人工智能技术日新月异的今天,DeepSeek 作为一款极具创新性和实用性的 AI,在众多同类产品中崭露头角,凭借其卓越的性能和丰富的功能,吸引了大量用户的关注。 DeepSeek 是一款由国内顶尖团队研发的人工智能,它基于先进…

消费电子产品中的噪声对TPS54202的影响

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、概述 在白色家电领域,降压转换器的应用非常广泛,为了实现不同的功能就需要不同的电源轨。TPS542…

无限使用Cursor

原理:运行程序获得15天的免费试用期,重新运行程序重置试用期,实现无限使用。免费的pro账号,一个月有250的高级模型提问次数。 前提:已安装cursor cursor-vip工具:https://cursor.jeter.eu.org?p95d60efe…

Linux之文件IO前世今生

在 Linux之文件系统前世今生(一) VFS中,我们提到了文件的读写,并给出了简要的读写示意图,本文将分析文件I/O的细节。 一、Buffered I/O(缓存I/O)& Directed I/O(直接I/O&#…

【计组】实验五 J型指令设计实验

目录 一、实验目的 二、实验环境 三、实验原理 四、实验任务 代码 一、实验目的 1. 理解MIPS处理器指令格式及功能。 2. 掌握lw, sw, beq, bne, lui, j, jal指令格式与功能。 3. 掌握ModelSim和ISE\Vivado工具软件。 4. 掌握基本的测试代码编写和FPGA开发板使用方法。 …

扩展知识--缓存和分时复用cpu

在多核CPU中,缓存和分时复用CPU是两个重要的概念,它们分别涉及硬件架构和资源管理策略。以下将从缓存的层次结构、工作原理以及分时复用CPU的概念进行详细解释。 一、多核CPU中的缓存 缓存的定义与作用 缓存(Cache)是位于CPU与主…

人工智能:从概念到未来

人工智能:从概念到未来 一、引言 在当今数字化时代,人工智能(Artificial Intelligence,AI)已从科幻小说和电影中的幻想逐渐走进现实,成为推动社会进步和经济发展的关键力量。它正在深刻地改变着我们的生活…

nvm:node 版本管理器

一、先安装git Git 安装完成后执行 git --version查看版本号是否安装成功 二、安装nvm (参考链接:mac 安装nvm详细教程 - 简书) 官网(https://github.com/nvm-sh/nvm/blob/master/README.md)查看最新版本安装命令 …

【1】深入解析 SD-WAN:从思科 SD-WAN 视角看现代网络发展

1. 什么是 SD-WAN? SD-WAN(软件定义广域网,Software-Defined Wide Area Network)是一种基于 SDN(软件定义网络)的广域网技术。它利用软件控制来管理广域网连接、流量和安全策略,从而优化数据传输,提高网络可用性。 传统的广域网(WAN)通常依赖专线(如 MPLS)连接分…

C语言基础学习之环境准备

写在前面 本文看下如何在win环境中使用vs code开发C程序。 1:安装gcc 从这里下载,解压,配置环境变量,执行gcc -v验证: C:\Windows\system32>gcc -v Using built-in specs. COLLECT_GCCgcc COLLECT_LTO_WRAPPERD:/programs/…

LabVIEW之TDMS文件

在很多场合,早期的LabVIEW版本不得不借助常规的数据库来做一些数据管理工作,但常规数据库对于中高速数据采集显然是不合适的,因为高速数据采集的数据量非常大,用一般的数据库无法满足存储数据的要求。 直到TDM(Technical Data Ma…

设置IDEA的内存大小,让IDEA更流畅: 建议设置在 2048 MB 及以上

文章目录 引言I 更改内存设置基于窗口界面进行内存设置修改内存配置文件II IDEA中的一些常见问题及其解决方案引言 方式一:基于窗口界面进行内存设置方式二:修改内存配置文件I 更改内存设置 基于窗口界面进行内存设置 打开IDEA,上方菜单栏 Help > Change Memory Settin…

攻防世界ctf

1.题目名称-文件包含 if(isset($_GET[filename])){$filename $_GET[filename];include($filename);} 通过代码审计,我们发现这存在文件包含漏洞,由于没有很好的进行过滤,所以我们可以通过 URL 参数传递任意文件路径给参数$filename&#…

多线程操作

一.多线程 1.线程的创建 1.继承Thread类,重写run()方法创建线程 2.实现Runnable接口,重写run()方法 3.匿名内部类创建线程 4.匿名内部类实现Runnable接口创建线程 5.[常用]lambda表达式创建线程 2.启动线程 Thread类使用start方法,启动一个线程,对于同一个Thread对象只能…

根文件系统 Debian10【1】移植

1.开发背景 一般根文件系统使用 Busybox 或者是 Buildroot 构建,这样构建出来的文件系统比较小,但是不具备上网功能,扩展性比较差。随着 ARM 的日益强大,ARM 可以搭载更庞大复杂的系统,可以是 Ubuntu 或者 Debian 等发…

OpenSIPS-Dispatcher模块详解:优化SIP流量分发的利器

在 OpenSIPS 中,dispatcher 模块用于实现负载均衡和故障转移。通过 dispatcher 模块,你可以将 SIP 请求分发到一组后端服务器(如媒体服务器、代理服务器等),并根据配置的算法和策略动态调整分发逻辑。 模块功能使用样…

09vue3实战-----引入element-plus组件库中的图标

09vue3实战-----引入element-plus组件库中的图标 1.安装2.引入3.优化 element-plus中的icon图标组件的使用和其他平台组件(如el-button按钮)是不一样的。 1.安装 npm install element-plus/icons-vue2.引入 在这我们只讲述最方便的一种引入方法------完整引入。这需要从elem…

Docker 部署 GitLab

一、下载镜像 docker pull gitlab/gitlab-ce 二、运行容器 docker run -d --name gitlab-20080 \n -p 20443:443 -p 20080:80 -p 20022:22 \n -v /wwwroot/opt/docker/gitlab-20080/etc:/etc/gitlab \n -v /wwwroot/opt/docker/gitlab-20080/log:/var/log/gitlab \n -v /www…

优惠券平台(十七):实现用户查询/取消优惠券预约提醒功能

业务背景 当用户预约了一个或多个优惠券抢购提醒后,如果不再需要提醒,可以取消预约通知。不过,虽然用户可以取消提醒,但已经发送到 MQ 的消息不会被撤回,消费者在时间点到达时依然会收到消息。此时,我们不…