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

蓝桥杯---力扣题库第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.kler.cn/a/537842.html

相关文章:

  • 数据库高安全—审计追踪:传统审计统一审计
  • C++广度优先搜索
  • JavaScript入门知识
  • 2025-2-10 deepseek本地部署与本地训练最简版本
  • 在 C++ 中使用 Protocol Buffers(protobuf)
  • 14vue3实战-----获取用户信息和用户的菜单树信息
  • html css网页制作成品——HTML+CSS爷爷不泡茶的茶网页设计(7页)附源码
  • IDEA安装离线插件(目前提供了MavenHelper安装包)
  • npm中央仓库
  • pycharm ai插件
  • element-plus 解决el-dialog背后的页面滚动问题,及其内容有下拉框出现错位问题
  • 21.[前端开发]Day21-HTML5新增内容-CSS函数-BFC-媒体查询
  • < 评论 > 阿里云 与 腾讯云 国内的轻量应用服务器(VPS)产品对比
  • 【韩顺平linux】部分上课笔记整理
  • 星网锐捷 DMB-BS LED屏信息发布系统taskexport接口处存在敏感信息泄露
  • 机器学习专业毕业设计选题灵感集锦:选题建议
  • C++STL(四)——vector模拟
  • Web自动化测试:如何生成高质量的测试报告
  • Element UI 表单源码原理
  • (六)C++的函数模板与类模板
  • 使用 Nginx 搭建代理服务器(正向代理 HTTPS 网站)指南
  • LVSNAT服务搭建
  • 2024最新版Java学习路线图--Java语言进阶重点知识
  • 【Ubuntu】安装和使用Ollama的报错处理集合
  • AGP8 混淆打包,反射实例化启动闪退
  • 识别市场动态:ADX趋势指标如何提升你的交易决策?