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

LeetCode 3146.两个字符串的排列差:小数据,我选择暴力模拟

【LetMeFly】3146.两个字符串的排列差:小数据,我选择暴力模拟

力扣题目链接:https://leetcode.cn/problems/permutation-difference-between-two-strings/

给你两个字符串 st,每个字符串中的字符都不重复,且 ts 的一个排列。

排列差 定义为 st 中每个字符在两个字符串中位置的绝对差值之和。

返回 st 之间的 排列差

 

示例 1:

输入:s = "abc", t = "bac"

输出:2

解释:

对于 s = "abc"t = "bac",排列差是:

  • "a"s 中的位置与在 t 中的位置之差的绝对值。
  • "b"s 中的位置与在 t 中的位置之差的绝对值。
  • "c"s 中的位置与在 t 中的位置之差的绝对值。

即,st 的排列差等于 |0 - 1| + |2 - 2| + |1 - 0| = 2

示例 2:

输入:s = "abcde", t = "edbac"

输出:12

解释: st 的排列差等于 |0 - 3| + |1 - 2| + |2 - 4| + |3 - 1| + |4 - 0| = 12

 

提示:

  • 1 <= s.length <= 26
  • 每个字符在 s 中最多出现一次。
  • ts 的一个排列。
  • s 仅由小写英文字母组成。

解题方法:暴力模拟

使用一个初始值位0的整型变量 a n s ans ans记录差值之和。

遍历字符串s中的每一个字符:

对于当前字符s[i],遍历字符串t。如果t[j]和s[i]相同,则令ans加上 i − j i-j ij的绝对值并结束对字符串t的遍历。

最终返回 a n s ans ans的值即为答案。

  • 时间复杂度 O ( l e n ( s ) 2 ) O(len(s)^2) O(len(s)2)
  • 空间复杂度 O ( 1 ) O(1) O(1)

字符串的最大长度为26,最多匹配 1 + 2 + 3 + ⋯ + 26 = ( 1 + 26 ) × 26 2 = 351 1+2+3+\cdots+26=\frac{(1+26)\times26}2=351 1+2+3++26=2(1+26)×26=351次,因此使用哈希表的意义不大。

AC代码

C++
class Solution {
public:int findPermutationDifference(string s, string t) {int ans = 0;for (int i = 0; i < s.size(); i++) {for (int j = 0; j < t.size(); j++) {if (t[j] == s[i]) {ans += abs(i - j);break;}}}return ans;}
};
Go
package mainfunc abs(x int) int {if x < 0 {return -x}return x
}func findPermutationDifference(s string, t string) int {ans := 0for i := 0; i < len(s); i++ {for j := 0; j < len(t); j++ {if s[i] == t[j] {ans += abs(i - j)break}}}return ans
}
Java
class Solution {public int findPermutationDifference(String s, String t) {int ans = 0;for (int i = 0; i < s.length(); i++) {ans += Math.abs(i - t.indexOf(s.charAt(i)));}return ans;}
}
Python
class Solution:def findPermutationDifference(self, s: str, t: str) -> int:ans = 0for i in range(len(s)):ans += abs(i - t.find(s[i]))return ans

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://letmefly.blog.csdn.net/article/details/141497994

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 02- javascript 高阶-构造函数(知识点)呀
  • PagosController : ControllerBase
  • Oracle(84)什么是SQL调优顾问(SQL Tuning Advisor)?
  • 计算机网络基础 - 应用层(1)
  • 【JVM】亿级流量调优(二)
  • Linux 下命令行参数和环境变量
  • vue3+ts+Go使用百度地图路书实现历史轨迹回放、轨迹回放进度、聚合点、自定义弹框和实时监控视频、多路视频轮巡播放
  • 【大数据算法】一文掌握大数据算法之:排序链表搜索的亚线性算法。
  • 服务容错(Service Fault Tolerance)
  • Git 版本控制操作
  • 鲲鹏服务器安装Kafka
  • C#二叉搜索树算法
  • 数据库查询优化:提高数据提取效率
  • 趋势分享|Gartner解读中国企业容器管理新挑战:混合环境、容器安全、AI支持
  • 网络缓存:加速网络应用的隐形引擎
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 10个确保微服务与容器安全的最佳实践
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • C# 免费离线人脸识别 2.0 Demo
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • HTTP--网络协议分层,http历史(二)
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • js对象的深浅拷贝
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • laravel5.5 视图共享数据
  • Mac转Windows的拯救指南
  • Meteor的表单提交:Form
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 正则表达式
  • 智能合约Solidity教程-事件和日志(一)
  • 最近的计划
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 阿里云服务器如何修改远程端口?
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​​​【收录 Hello 算法】9.4 小结
  • # Panda3d 碰撞检测系统介绍
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (¥1011)-(一千零一拾一元整)输出
  • (13)DroneCAN 适配器节点(一)
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (九)c52学习之旅-定时器
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (原創) 物件導向與老子思想 (OO)
  • (转载)PyTorch代码规范最佳实践和样式指南
  • ./configure,make,make install的作用(转)
  • .gitignore文件设置了忽略但不生效
  • .net web项目 调用webService
  • .net 怎么循环得到数组里的值_关于js数组
  • .net反编译工具
  • .net下简单快捷的数值高低位切换
  • .NET中使用Redis (二)
  • /boot 内存空间不够