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的整型变量$ans$记录差值之和。

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

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

最终返回$ans$的值即为答案。

  • 时间复杂度$O(len(s)^2)$
  • 空间复杂度$O(1)$

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

AC代码

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main

func abs(x int) int {
if x < 0 {
return -x
}
return x
}

func findPermutationDifference(s string, t string) int {
ans := 0
for 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

1
2
3
4
5
6
7
8
9
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

1
2
3
4
5
6
class Solution:
def findPermutationDifference(self, s: str, t: str) -> int:
ans = 0
for i in range(len(s)):
ans += abs(i - t.find(s[i]))
return ans

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

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


3146.两个字符串的排列差
https://blog.letmefly.xyz/2024/08/24/LeetCode 3146.两个字符串的排列差/
作者
Tisfy
发布于
2024年8月24日
许可协议