【LeetCode每日一题:809.情感丰富的文字~~~双指针+计数器】

news2025/8/6 9:59:08

题目描述

有时候人们会用重复写一些字母来表示额外的感受,比如 “hello” -> “heeellooo”, “hi” -> “hiii”。我们将相邻字母都相同的一串字符定义为相同字母组,例如:“h”, “eee”, “ll”, “ooo”。

对于一个给定的字符串 S ,如果另一个单词能够通过将一些字母组扩张从而使其和 S 相同,我们将这个单词定义为可扩张的(stretchy)。扩张操作定义如下:选择一个字母组(包含字母 c ),然后往其中添加相同的字母 c 使其长度达到 3 或以上。

例如,以 “hello” 为例,我们可以对字母组 “o” 扩张得到 “hellooo”,但是无法以同样的方法得到 “helloo” 因为字母组 “oo” 长度小于 3。此外,我们可以进行另一种扩张 “ll” -> “lllll” 以获得 “helllllooo”。如果 S = “helllllooo”,那么查询词 “hello” 是可扩张的,因为可以对它执行这两种扩张操作使得 query = “hello” -> “hellooo” -> “helllllooo” = S。

输入一组查询单词,输出其中可扩张的单词数量。

示例:

输入:
S = “heeellooo”
words = [“hello”, “hi”, “helo”]
输出:1
解释:
我们能通过扩张 “hello” 的 “e” 和 “o” 来得到 “heeellooo”。
我们不能通过扩张 “helo” 来得到 “heeellooo” 因为 “ll” 的长度小于 3 。

提示:

0 <= len(S) <= 100。
0 <= len(words) <= 100。
0 <= len(words[i]) <= 100。
S 和所有在 words 中的单词都只由小写字母组成。

求解思路

  1. 这道题目是通过双指针来求解的,遍历数组中每个字符串,依次和目标字符串做比较,通过俩个指针分别指向原始字符串和依次遍历的字符串,如果他们开始就不相等,那么直接结束,进行下一个字符串的判断,否则,分别通过一个计数器来维持当前字符串所处位置的字符个数,最后比较这俩个计数器的值,如果是被遍历的字符串当前位置计数器的个数是大于原始要求的字符串的个数,那么不符合题目要求,直接放回结束,被遍历的字符串当前位置计数器的个数不等于原始要求的字符串的个数,并且原始位置的计数器维持的个数是小于3的,那么直接结束,最后,如果俩个指针都到达了俩个字符串结束的位置,那么最终的结果加1,依次遍历每个过程,累加最后的结果即可。

实现代码

class Solution {
    public int expressiveWords(String s, String[] words) {
        int res=0,n=words.length;
        for(int i=0;i<n;i++){
            int c1=0,c2=0;
            String str=words[i];
            while(c1<s.length()&&c2<str.length()){
                if(s.charAt(c1)!=str.charAt(c2)){
                    break;
                }   
                char c=s.charAt(c1);
                int cnt1=0;
                while(c1<s.length()&&s.charAt(c1)==c){
                    cnt1++;
                    c1++;
                }
                int cnt2=0;
                while(c2<str.length()&&str.charAt(c2)==c){
                    cnt2++;
                    c2++;
                }
                if(cnt2>cnt1){
                    break;
                }
                if(cnt2!=cnt1&&cnt1<3){
                    break;
                }
                if(c1==s.length()&&c2==str.length()) res++;
            }
        }
        return res;
    }
}

运行结果

在这里插入图片描述

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

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

相关文章

MyBatis核心对象简介说明

转自: MyBatis核心对象简介说明 MyBatis 有三个基本要素&#xff1a; 核心接口和类MyBatis核心配置文件&#xff08;mybatis-config.xml&#xff09;SQL映射文件&#xff08;mapper.xml&#xff09;下面首先介绍 MyBatis 的核心接口和类&#xff0c;如下图 每个 MyBatis 应…

华为云会议网络研讨会,按次订购更方便!

如今&#xff0c;云会议已经成为日常办公协作的常态&#xff0c;但在线发布会、大型培训会、大型招聘会等大型会议&#xff0c;常规云会议由于会议容量有限、人多会控难、角色单一等技术限制&#xff0c;已经无法满足大型会议的需求&#xff0c;此时&#xff0c;网络研讨会便能…

【电商】电商后台系统整体介绍

电商后台系统支撑了电商企业亿万级的交易量&#xff0c;其重要性不言而喻。本文章将从电商后台系统的的各个模块来分析&#xff0c;让大家的后台真正”硬“起来。 当前关于产品经理的文章主要偏向方法论、业界动向、产品分析、用户体验、交互等&#xff0c;关于后台系统的文章比…

m在simulink进行DS-CDMA建模,然后通过MATLAB调用simulink模型进行误码率仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 研究信道编码在噪声和衰落信道条件下传输和保护数据或图像类型源的性能。在工作于AWGN和瑞利衰落信道&#xff08;可根据需要选择信道类型&#xff09;的Simulink中创建二进制PSK&#x…

Metabase学习教程:视图-5

用地图可视化数据 如何使用标注地图、区域地图和网格地图来可视化Metabase中的数据。 本文介绍如何在Metabase中使用地图来可视化数据。本文中使用的美国地图是使用示例数据库每次安装Metabase时都会用到。 地图类型 Metabase具有三种地图类型&#xff1a; 标注地图标记特…

【Spring(五)】引入篇:一文带你弄懂AOP的底层原理(动态代理)

有关Spring的所有文章都收录于我的专栏&#xff1a;&#x1f449;Spring&#x1f448; 目录 一、前言 二、使用AOP需要的依赖 三、引入 四、AOP的底层原理之动态代理 五、总结 相关文章 【Spring&#xff08;一&#xff09;】如何获取对象&#xff08;Bean&#xff09;【Sprin…

[附源码]SSM计算机毕业设计民宿客栈管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

基于QT封装海康SDK(MvCameraControl),访问控制海康相机

1、封装类HkCameraApi,此类可以访问控制海康的网络相机、USB相机,可以同时采集多台相机的视频、控制设置的各种属性设置。 2、采集效果如下: 3.、该类已经上传,下载地址:基于C++封装HkCameraApi类,用于访问控制海康相机-C++文档类资源-CSDN下载 4、HkCameraApi类的头文…

【附源码】计算机毕业设计JAVA疫情下的居民管理系统

【附源码】计算机毕业设计JAVA疫情下的居民管理系统 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA…

算法图解学习4 递归

random recording 随心记录 What seems to us as bitter trials are often blessings in disguise. 看起来对我们痛苦的试炼&#xff0c;常常是伪装起来的好运。 递归 背景导入 在一个盒中盒找钥匙 第一种实现方法&#xff0c;如下图 第二种方法&#xff0c;如图 两种方法伪代…

6.jQuery中的Ajax上传文件

目录 1 上传文件 2 loading效果 1 上传文件 后端接到数据后保存在upload_file文件夹下 前端依然使用FormData处理文件 contentType:false的意思是 使用FormData默认的Content-Type值 processData:false的意思是 不对FormData中的数据进行url编码&#xff0c;而是将Form…

与专业安全厂商相比,戴尔做安全的优势是什么?

上文介绍了戴尔大谈零信任架构的原因&#xff0c;也提到了现代安全的三大要素&#xff0c;分别为&#xff1a;信任的基础、简化的零信任采纳和网络恢复计划。事实上&#xff0c;戴尔作为全球大型IT基础设施提供商&#xff0c;能提供多种网络安全能力来构建现代安全&#xff0c;…

当你碰到了MySQL中的死锁,你了解这些机制吗?

MySQL死锁怎么来的&#xff1f; 当两个及以上的事务&#xff0c;双方都在等待对方释放已经持有的锁或因为加锁顺序不一致造成循环等待锁资源&#xff0c;就会出现“死锁”。 总结一下生产死锁的4个条件&#xff1a; 两个或者两个以上事务 每个事务都已经持有锁并且申请新的锁…

[附源码]java毕业设计游戏战队考核系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Baklib帮助中心:自助服务指南

根据 Social endurance 的调查&#xff0c;64%的客户希望在 Twitter 上发帖一小时内得到回复&#xff0c;85%的客户希望公司在6小时内回复。 虽然这种客户期望的趋势几乎适用于所有行业&#xff0c;但某些行业——如电子商务应用程序——的流量正创下历史新高。大多数公司可能…

如何在矩池云上安装语音识别模型 Whisper

如何在矩池云上安装语音识别模型 Whisper Whisper 是 OpenAI 近期开源的一个语音识别的模型&#xff0c;研究人员基于 680,000 小时的标记音频数据进行训练&#xff0c;它同时也是一个多任务模型&#xff0c;可以进行多语言语音识别以及语音翻译任务&#xff0c;可以将语音音频…

【CVPR 2022】QueryDet:加速高分辨率小目标检测

大连不负众望&#xff0c;疫情了&#xff0c;我们又封校了&#xff0c;可能初步封个5678天&#xff0c;微笑jpg 论文地址&#xff1a;https://arxiv.org/pdf/2103.09136.pdf 项目地址&#xff1a;https://github.com/ ChenhongyiYang/QueryDet-PyTorch 1. 简介 背景&#xf…

java中的线程池

文章目录前言线程池的优点线程池的实现原理线程池的创建线程池提交任务线程池的关闭合理配置线程池线程池的监控总结前言 在处理一些比较复杂或者费时的任务的时候&#xff0c;我们常常会选择多线程的方式去处理。那么怎么创建多个线程呢&#xff0c;当然不可能是一个一个创建…

微信如何制作自己的小程序【微信小程序】

小程序在微信的生态中&#xff0c;一直是比较受到企业商家的欢迎&#xff0c; 由于小程序的制作门槛比较低&#xff0c;开发人员可以根据自己喜欢的风格进行定制开发。 微信平台上&#xff0c;很多商家都在为制作小程序而发愁。那么微信如何制作自己的小程序呢&#xff1f; 一…

[附源码]java毕业设计疫情期间物资分派管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…