当前位置: 首页 > 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))

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


http://www.mrgr.cn/news/12944.html

相关文章:

  • 【游戏】游戏中常见的运动方式及示例
  • 设置视图的宽高
  • 【asp.net】api后端返回前端json格式和字符串格式样式
  • 数据结构与算法(循环链表,双向链表)
  • 【Leetcode 2006 】 差的绝对值为 K 的数对数目 —— 哈希表
  • 数字签名:信息安全的新屏障
  • Nginx实现反向代理负载均衡实验
  • 【C/C++】C语言如何判断字符长度
  • git笔记:git常用命令备忘录
  • 信息安全--哈希算法 Hash
  • Ps:首选项 - 历史记录
  • Git 远程操作
  • MySQL的延迟复制
  • sqli-labs靶场通关攻略(41-45关)
  • 什么软件可以用平板远程控制电脑?
  • 「2.1」收集雪花
  • Windows提取微信聊天记录,将其导出成HTML、Word、Excel文档永久保存
  • 【鸿蒙学习】HarmonyOS应用开发者高级认证 - 应用开发安全(含闯关习题)
  • bypass disable_function绕过
  • 第二百零六节 Java正则表达式教程 - Java 正则表达式查找/替换