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

leetcode 3146 两个字符串的排列差

leetcode 3146 两个字符串的排列差

  • 正文
    • 题目描述
    • 解题思路
    • 方法1
  • Python 处理字符串的思路
    • 方法2

正文

题目描述

在这里插入图片描述

解题思路

直接 for 循环遍历第一个字符串,在第二个字符串中找出第一个字符串中的对应字符的位置,做差,再取绝对值,最后求和即可。

方法1

class Solution:def findPermutationDifference(self, s: str, t: str) -> int:sum_ = 0for index, char in enumerate(s):sum_ += abs(index - t.index(char))return sum_

上述代码可以实现目的,但是 index() 方法也是一个遍历的过程,会导致代码需要的时间很长。

Python 处理字符串的思路

Python 中使用字典处理字符串就可以避免使用 index() 进入循环,本题中可以缩减至少一半的时间。

方法2

class Solution:def findPermutationDifference(self, s: str, t: str) -> int:dict1 = {}for i, char in enumerate(s):dict1[char] = isum_ = 0for i, char in enumerate(t):sum_ += abs(i - dict1[char])return sum_

上述代码我们用了两次循环,且使用了累加的方式,每次循环进行一次加法运算,这样就会增加时间。

我们可以尝试使用行内循环将累加变成对 generator 对象的一次性求和,可以减少时间,且无需初始化一个额外的变量 sum_

class Solution:def findPermutationDifference(self, s: str, t: str) -> int:dict1 = {c: i for i, c in enumerate(s)}return sum(abs(i - dict1[c]) for i, c in enumerate(t))

如果大家觉得有用,就请点个赞吧~

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • QStackedWidget使用整理
  • 力扣刷题(复习版)
  • 7-2 求矩阵的最大值(设惟一)
  • Java底层堆内存、GC等知识点阐述
  • 8、引用
  • 【机器学习】CNN在计算机视觉中的应用
  • PowerShell脚本编写:自动化Windows开发工作流程
  • Python(PyTorch)物理变化可微分神经算法
  • 北京博科测试
  • Java并发编程12
  • es 7.17.23安装ik插件启动失败,access denied,Permission
  • uniapp开发微信小程序调用微信支付
  • 宠物空气净化器吸猫毛有用吗?希喂、美的、霍尼韦尔三款亲测分享
  • C++类和对象(3)——this指针
  • Redis中的缓存穿透、缓存击穿、缓存雪崩(面试版)
  • 10个最佳ES6特性 ES7与ES8的特性
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Facebook AccountKit 接入的坑点
  • JS变量作用域
  • nginx 负载服务器优化
  • PHP 小技巧
  • Promise面试题2实现异步串行执行
  • python学习笔记 - ThreadLocal
  • 从零开始在ubuntu上搭建node开发环境
  • 后端_MYSQL
  • 排序算法学习笔记
  • 前端js -- this指向总结。
  • 设计模式 开闭原则
  • 使用putty远程连接linux
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 我有几个粽子,和一个故事
  • scrapy中间件源码分析及常用中间件大全
  • 我们雇佣了一只大猴子...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • #知识分享#笔记#学习方法
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (27)4.8 习题课
  • (6)设计一个TimeMap
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (六)激光线扫描-三维重建
  • (十三)Flask之特殊装饰器详解
  • (四)js前端开发中设计模式之工厂方法模式
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (译) 函数式 JS #1:简介
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .htaccess配置重写url引擎
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始