力扣每日一题【2399.检查相同字母间的距离】

news/2025/2/25 18:49:08

力扣每日一题【2399.检查相同字母间的距离】

文章目录

  • 力扣每日一题【2399.检查相同字母间的距离】
    • 🍊题目
    • 🍋解析
    • 🥦代码

🍊题目

给你一个下标从 0 开始的字符串 s ,该字符串仅由小写英文字母组成,s 中的每个字母都 恰好 出现 两次 。另给你一个下标从 0 开始、长度为 26 的的整数数组 distance 。

字母表中的每个字母按从 0 到 25 依次编号(即,‘a’ -> 0, ‘b’ -> 1, ‘c’ -> 2, … , ‘z’ -> 25)。

在一个 匀整 字符串中,第 i 个字母的两次出现之间的字母数量是 distance[i] 。如果第 i 个字母没有在 s 中出现,那么 distance[i] 可以 忽略 。

如果 s 是一个 匀整 字符串,返回 true ;否则,返回 false 。

示例1:

输入:s = "abaccb", distance = [1,3,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
输出:true
解释:
- 'a' 在下标 0 和下标 2 处出现,所以满足 distance[0] = 1- 'b' 在下标 1 和下标 5 处出现,所以满足 distance[1] = 3- 'c' 在下标 3 和下标 4 处出现,所以满足 distance[2] = 0 。
注意 distance[3] = 5 ,但是由于 'd' 没有在 s 中出现,可以忽略。
因为 s 是一个匀整字符串,返回 true 。

示例 2:

输入:s = "aa", distance = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
输出:false
解释:
- 'a' 在下标 01 处出现,所以两次出现之间的字母数量为 0 。
但是 distance[0] = 1 ,s 不是一个匀整字符串。

提示:

  • 2 <= s.length <= 52
  • s 仅由小写英文字母组成
  • s 中的每个字母恰好出现两次
  • distance.length == 26
  • 0 <= distance[i] <= 50

🍋解析

这道题目考的是哈希表、数组和字符串,主要是考察哈希表的使用,刚开始看这道题目的时候感觉很绕,我没有看懂,什么每个字母都恰好出现两次,然后又是编号的,然后给出的distance[i]是第i个字母的两次出现之间的字母数量,一开始我以为要用双指针,但我仔细看题之后应该是使用哈希映射来跟踪字符串中每个字母的最后出现位置,并计算当前出现位置与每个字母的最后出现位置之间的距离,以检查它是否与输入列表中给定的距离匹配。

我们需要定义一个大小为 26 的整数数组,以跟踪每个字母的第一次出现。然后我们还需要知道两个相同字母之间的距离怎么求,我们可以使用一个变量temp记录当前的索引位置,用for循环去遍历字符串,两次相同字母出现距离就是当前位置temp-hash_map[i] - 1,然后判断这个距离跟题目给我们的distance[i]的值是否相同。

🥦代码

class Solution:
    def checkDistances(self, s: str, distance: list[int]) -> bool:
        hash_map = [-1] * 26    # 记录每个字母最后一次出现的位置
        temp = 0    # 记录当前位置
        for i in s:     # 遍历字符串
            i = ord(i) - ord('a')   # 转换为数字
            if hash_map[i] == -1:   # 如果当前字母第一次出现
                hash_map[i] = temp  # 记录当前位置
            else:   # 如果当前字母不是第一次出现
                j = temp - hash_map[i] - 1  # 计算两次出现的距离
                if distance[i] != j:    # 如果距离不符合要求
                    return False
            temp += 1   # 更新当前位置
        return True

http://www.niftyadmin.cn/n/200369.html

相关文章

护眼灯哪些牌子好?2023热门护眼灯品牌推荐

护眼灯可以说是书桌的标配&#xff0c;不管是办公桌、书桌上&#xff0c;基本上有一盏辅助台灯&#xff0c;主要是就是补足室内环境亮度&#xff0c;市面上可以选择的护眼灯&#xff0c;可谓是琳琅满目&#xff0c;让人挑花眼&#xff0c;如果选择品质不好的台灯可能对眼睛造成…

Hilt进阶--本文带你吃透Hilt自定义与跨壁垒

跨越 IOC容器的壁垒 使用依赖注入&#xff08;DI&#xff09;时&#xff0c;我们需要它对 实例 、依赖关系 、 生命周期 进行管理&#xff0c;因此DI框架会构建一个容器&#xff0c;用于实现这些功能。这个容器我们惯称为IOC容器。 在容器中&#xff0c;会按照我们制定的规则…

ASP一个小型搜索引擎的设计与实现

本文通过分析国内外搜索引擎的发展现状&#xff0c;提出了一种功能强大&#xff0c;操作简单&#xff0c;通用性强&#xff0c;可以满足用户对信息搜索需要,利用ASP技术实现的一个B/S体系结构的搜索引擎系统方案。文中着重论述了该系统的功能与实现、数据流程与存储、后台管理等…

PIP 绑定国内源

今天给新PC部署环境&#xff0c;pip install 太慢了&#xff0c;又忘记具体怎么配了&#xff0c;就查了下&#xff0c;结果看很多blog都是去手动新建pip.ini&#xff0c;太麻烦了。找到了之前的配置方法。记录下 直接cmd里面执行就可以了 pip config set global.index-url ht…

【Java】自定义注解和AOP切面的使用

前言 我们在开发的过程中&#xff0c;一般都需要对方法的入参进行打印&#xff0c;或者Debug调试的时候我们要查看方法入参的参数是否数量和数据正确性。 一般我们需要知道请求的参数、接口路径、请求ip等 但是考虑以后项目上线BUG排查的问题&#xff0c;最好的方式就是使用…

DataGrip连接数据库设置(MySQL、Oracle、SQL Server)

一、DataGrip连接MySQL 1.1 配置信息 1.2 测试查询employees库中departments表信息 employees为测试库&#xff0c;具体来源&#xff0c;参考这篇文章 下载并导入MySQL示例数据库employees 。 1.3 测试查询employees库中employees表信息 二、DataGrip连接Oracle 将SID改为o…

javaWeb(HTTP、Tomcat、Servlet)

目录 HTTP Web 服务器 - Tomcat 简介 基本使用&#xff1a;下载、安装、卸载、启动、关闭、配置、部署项目 IDEA中创建 Maven Web项目​编辑 IDEA中使用 Tomcat Servlet 快速入门 Servlet 执行流程 Servlet 生命周期 Servlet 体系结构 Servlet urlPattern配置 XM…

讲解如何从内核角度理解K8s CPU限流的原理

在使用 Kubernetes&#xff08;简称K8s&#xff09; 时&#xff0c;通常会在同一台机器上部署多个 Pod。如果某个 Pod 中的服务出现问题&#xff08;如出现死循环&#xff09;&#xff0c;将会导致占用大量的 CPU 时间&#xff0c;从而影响到其他 Pod 的正常运行。 为了解决这…