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

leetcode 找不同

389. 找不同

已解答

简单

相关标签

相关企业

给定两个字符串 s 和 t ,它们只包含小写字母。

字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。

请找出在 t 中被添加的字母。

示例 1:

输入:s = "abcd", t = "abcde"
输出:"e"
解释:'e' 是那个被添加的字母。

示例 2:

输入:s = "", t = "y"
输出:"y"

提示:

  • 0 <= s.length <= 1000
  • t.length == s.length + 1
  • s 和 t 只包含小写字母
class Solution:def findTheDifference(self, s: str, t: str) -> str:# 将字符串s中的字符进行排序,并在末尾添加一个空格,以便在后续的比较中能够区分s和t的不同s = sorted(s) + [' ']# 将字符串t中的字符进行排序t = sorted(t)# 使用zip函数同时迭代两个排序后的字符串列表for i, b in zip(s, t):# 如果在迭代过程中发现两个字符串的对应字符不相等if i != b:# 返回t中的那个不同的字符return b

要找出在字符串 t 中被添加的字母,我们可以利用字符频率的概念。由于 st 只包含小写字母,我们可以创建一个计数器来统计 s 中每个字母出现的次数,然后遍历 t 并更新这个计数器。最后,那个在 t 中出现次数比 s 多一次的字母就是被添加的字母。

以下是解决这个问题的算法步骤:

  1. 创建一个大小为26的数组 count,用于存储每个字母的频率,初始值都为0。
  2. 遍历字符串 s,对于 s 中的每个字符,增加 count 数组中对应字母的计数。
  3. 遍历字符串 t,对于 t 中的每个字符,如果 count 数组中对应字母的计数不为0,就减1,直到找到计数为0的字母,这个字母就是被添加的字母。
  4. 返回找到的被添加的字母。
class Solution:def findTheDifference(self, s: str, t: str) -> str:count = [0] * 26  # 初始化计数器数组for char in s:   # 遍历字符串scount[ord(char) - ord('a')] += 1  # 更新s中每个字母的计数for char in t:   # 遍历字符串tif count[ord(char) - ord('a')] == 0:  # 如果计数为0,说明是被添加的字母return charelse:count[ord(char) - ord('a')] -= 1  # 否则,更新计数
class Solution:def findTheDifference(self, s: str, t: str) -> str:return (Counter(t) - Counter(s)).popitem()[0]

使用了 Python 的 collections 模块中的 Counter 类来统计字符串中每个字符的出现次数。

  1. class Solution: 定义了一个名为 Solution 的类,这个类将包含解决这个问题的方法。

  2. def findTheDifference(self, s: str, t: str) -> str: 定义了一个名为 findTheDifference 的方法,它接受两个字符串参数 st,并返回一个字符串,即在 t 中被添加的字母。

  3. return (Counter(t) - Counter(s)).popitem()[0] 是这个方法的核心逻辑:

    • Counter(t) 创建一个 Counter 对象,统计字符串 t 中每个字符的出现次数。
    • Counter(s) 创建另一个 Counter 对象,统计字符串 s 中每个字符的出现次数。
    • Counter(t) - Counter(s) 执行两个 Counter 对象的差集操作,结果是一个 Counter 对象,其中包含在 t 中出现次数多于 s 的字符及其出现次数。
    • .popitem() 方法从 Counter 对象中弹出(并返回)一个包含键值对的元组,这个键值对是 Counter 对象中的一个项。由于我们只关心那个多出来的字符,所以这里使用 popitem() 方法来获取这个字符。
    • [0] 表示返回元组中的第一个元素,即字符本身。

这段代码的逻辑是,由于 t 是由 s 随机重排后添加一个字母形成的,所以 t 中多出来的那个字母在 Counter(t) 中的计数会比 Counter(s) 中的计数多1。通过计算两个 Counter 对象的差集,我们可以直接找到这个多出来的字母。

这种方法的时间复杂度是 O(n),其中 n 是字符串的长度,因为我们需要遍历整个字符串来构建 Counter 对象。空间复杂度也是 O(n),因为我们需要存储两个字符串中所有字符的计数。

 

相关文章:

leetcode 找不同

389. 找不同 已解答 简单 相关标签 相关企业 给定两个字符串 s 和 t &#xff0c;它们只包含小写字母。 字符串 t 由字符串 s 随机重排&#xff0c;然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 示例 1&#xff1a; 输入&#xff1a;s "abcd"…...

2025 - 生信信息学 - GEO数据分析 - RF分析(随机森林)

GEO数据分析 - RF分析&#xff08;随机森林&#xff09; 01 准备数据文件 #install.packages("randomForest")#引用包 library(randomForest) set.seed(123456)inputFile"diffGeneExp.txt" #输入文件 setwd("/Users/wangyang/Desktop/BCBM/02ra…...

Matlab深度学习(四)——AlexNet卷积神经网络

网络搭建参考&#xff1a;手撕 CNN 经典网络之 AlexNet&#xff08;理论篇&#xff09;-CSDN博客 在实际工程应用中&#xff0c;构建并训练一个大规模的卷积神经网络是比较复杂的&#xff0c;需要大量的数据以及高性能的硬件。如果通过训练好的典型网络稍加改进&#xf…...

etcd defrag

场景 prometheus监控告警,告警信息如下 etcd cluster "kube-etcd": database size in use on instance xx is 33.45% of the actual allocated disk space, please run defragmentation (e.g. etcdctl defrag) to retrieve the unused fragmented disk space.处理…...

golang语言整合jwt+gin框架实现token

1.下载jwt go get -u github.com/dgrijalva/jwt-go2.新建生成token和解析token文件 2.1 新建common文件夹和jwtConfig文件夹 新建jwtconfig.go文件 2.2 jwtconfig.go文件代码 /* Time : 2021/8/2 下午3:03 Author : mrxuexi File : main Software: GoLand */ package jwtC…...

数据治理、数据素养和数据质量管理:文献综述

注意&#xff1a;这并不是正式发表的论文&#xff0c;只是一篇用来交作业的文章 摘要 随着数据时代的到来&#xff0c;数据治理、数据素养和数据质量管理成为组织数据管理中的三大核心概念。本文基于相关研究与实践&#xff0c;对这三个领域进行全面综述&#xff0c;探讨它…...

【Linux】用户和用户组管理

管理用户 1&#xff0e;添加用户账号——useradd命令 【实例2-1-1】 按系统默认配置添加指定用户账号st和stu。 # 添加用户账号st [rootlocalhost ~]# useradd st # 添加用户账号stu [rootlocalhost ~]# useradd stu【实例2-1-2】添加用户账号stu01&#xff0c;UID为1004&am…...

游戏引擎学习第16天

视频参考:https://www.bilibili.com/video/BV1mEUCY8EiC/ 这些字幕讨论了编译器警告的概念以及如何在编译过程中启用和处理警告。以下是字幕的内容摘要&#xff1a; 警告的定义&#xff1a;警告是编译器用来告诉你某些地方可能存在问题&#xff0c;尽管编译器不强制要求你修复…...

如何通过对敏捷实践的调整,帮助远程团队提升研发效能?

首先明确一点&#xff0c;最敏捷的做法就是不要远程团队或分布式团队&#xff0c;远程一定比不上面对面同一地点的模式&#xff0c;毕竟环境不同&#xff0c;就不要期望远程团队和本地团队具备相同的效能&#xff0c;甚至期望更高。 那么&#xff0c;无论何种原因&#xff0c;…...

Ubuntu Linux使用前准备动作 配置SSH

在 Ubuntu 系统中配置 SSH 服务可以通过以下步骤进行&#xff1a; 1、安装ssh服务 1&#xff09;打开终端&#xff08;可以使用快捷键 Ctrl Alt T&#xff09;。 2&#xff09;运行以下命令安装 OpenSSH 服务器&#xff1a; sudo apt-get update&#xff1a;这一步是更新…...

疫情下的图书馆管理系统:Spring Boot技术

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了疫情下图书馆管理系统的开发全过程。通过分析疫情下图书馆管理系统管理的不足&#xff0c;创建了一个计算机管理疫情下图书馆管理系统的方案。文章介绍了疫情下图…...

vue3完整安装并创建项目

1、下载&#xff1a;https://npmmirror.com/mirrors/node/v18.19.0/node-v18.19.0-x64.msi 2、验证Nodejs是否安装成功&#xff08;管理员身份运行cmd&#xff09; node -v #查看nodejs的版本 v18.19.0npm -v #查看npm的版本 10.2.3 3、在D:\Program Files\nodejs路径下创建两…...

【Linux】Linux入门实操——进程管理(重点)

1. 概述 在 LINUX 中&#xff0c;每个执行的程序都称为一个进程。每一个进程都分配一个ID号(pid,进程号)。>windows > linux每个进程都可能以两种方式存在的。前台与后台&#xff0c;所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作&#xff0…...

Linux-Apache

文章目录 Apache基础配置 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Linux专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月19日12点20分 Apache Web服务器用来实现HTTP和相关TCP连接的处理&#xff0c;同时负责所提供资源的管理…...

高危,Laravel参数注入漏洞安全风险通告

今日&#xff0c;亚信安全CERT监控到安全社区研究人员发布安全通告&#xff0c;披露了Laravel 参数注入漏洞(CVE-2024-52301)。在受影响的版本中&#xff0c;Application.php 文件的 detectEnvironment 函数直接使用了 $_SERVER[argv]&#xff0c;但没有检查运行环境是否为 CLI…...

【Qt】使用QString的toLocal8Bit()导致的问题

问题 使用Qt发送一个Http post请求的时候&#xff0c;服务一直返回错误和失败信息。同样的url以及post参数&#xff0c;复制黏贴到postman里就可以发送成功。就感觉很神奇。 原因 最后排查出原因是因为参数中含有汉字而导致的编码问题。 在拼接post参数时&#xff0c;使用了…...

Android上运行Opencv(TODO)

在高通安卓平台上&#xff0c;确实可以通过 NDK 使用 OpenCV 并访问摄像头。NDK 提供了更高性能的计算能力&#xff0c;特别是在图像处理和计算密集型任务中&#xff0c;与 OpenCV 结合可以充分利用高通平台的硬件资源&#xff08;如 NEON SIMD 指令集和 GPU 加速&#xff09;。…...

动态IP黑白名单过滤的设计与实现(上篇设计思想)

文章目录 需求分析方案设计1、设计过程2、最终方案3、扩展知识 - 布隆过滤器 需求分析 一些恶意用户&#xff08;可能是黑客、爬虫、DDoS 攻击者&#xff09;可能频繁请求服务器资源&#xff0c;导致资源占用过高。因此我们需要一定的手段实时阻止可疑或恶意的用户&#xff0c…...

LeetCode 力扣 热题 100道(五)最长回文子串(C++)

最长回文子串 给你一个字符串 s&#xff0c;找到 s 中最长的 回文子串。 回文性 如果字符串向前和向后读都相同&#xff0c;则它满足 回文性 子字符串子字符串 是字符串中连续的 非空 字符序列。 动态规划法 class Solution { public:string longestPalindrome(string s) {i…...

Docker--Docker Registry(镜像仓库)

什么是Docker Registry&#xff1f; 镜像仓库&#xff08;Docker Registry&#xff09;是Docker生态系统中用于存储、管理和分发Docker镜像的关键组件。 镜像仓库主要负责存储Docker镜像&#xff0c;这些镜像包含了应用程序及其相关的依赖项和配置&#xff0c;是构建和运行Doc…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...

前端开发者常用网站

Can I use网站&#xff1a;一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use&#xff1a;Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站&#xff1a;MDN JavaScript权威网站&#xff1a;JavaScript | MDN...