LeetCode题解854. 相似度为 K 的字符串

如果可以通过将 A 中的两个小写字母精确地交换位置 K 次得到与 B 相等的字符串,我们称字符串 A 和 B 的相似度为 K(K 为非负整数)。

给定两个字母异位词 A 和 B ,返回 A 和 B 的相似度 K 的最小值。

 

示例 1:

输入:A = "ab", B = "ba"

输出:1

示例 2:

输入:A = "abc", B = "bca"

输出:2

示例 3:

输入:A = "abac", B = "baca"

输出:2

示例 4:

输入:A = "aabc", B = "abca"

输出:2

 

提示:

1 <= A.length == B.length <= 20

A 和 B 只包含集合 {'a', 'b', 'c', 'd', 'e', 'f'} 中的小写字母。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/k-similar-strings

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解:``` .js
/**
*
* 思路:挨个遍历A,如果当前位置i,A[i]!=B[i],则开始交换,
* 交换时,需要将A[j] = B[i] 的元素放在i位置,注意,这里j可能有多个值,所以需要来个循环
* 还有个要注意的是:如果A[j]=B[i] && A[j] == B[j] 这种情况,是不需要交换的
* 举个例子:
* abcb bbca ,第一个交换位置是0,这个时候,有两个选择,把A[1]或A[3]换到0位置,那么如果是位置1,这个时候本来A[1]和B[1]就相等,如果换了,就要多一次交换次数
* 所以这里我们只选择交换A[3]
*
* 另外,在处理循环时,要注意,如果交换j1时,会得到后面一系列的结果,这时,可以将这些结果保存起来,
* 如果在交换j2时,遇到已经处理过的结果,就直接调用
*
* 这里我用递归做,思路应该会清晰点
* @param {string} A
* @param {string} B
* @return {number}
*/
var kSimilarity = function(A, B) {
\tvar map = {};

\treturn temp(0, A);

\tfunction temp(start, tA) {
\t\tif (start == tA.length) {
\t\t\treturn 0;
\t\t}
\t\tif (map[tA]) {
\t\t\treturn map[tA];
\t\t}
\t\tif (tA[start] == B[start]) {
\t\t\treturn temp(start + 1, tA);
\t\t} else {
\t\t\tvar min = Infinity;
\t\t\tfor (var i = start + 1; i < tA.length; i++) {
\t\t\t\tif (tA[i] == B[start] && tA[i] != B[i]) {
\t\t\t\t\tvar newA =
\t\t\t\t\t\ttA.substring(0, start) +
\t\t\t\t\t\ttA[i] +
\t\t\t\t\t\ttA.substring(start + 1, i) +
\t\t\t\t\t\ttA[start] +
\t\t\t\t\t\ttA.substring(i + 1);
\t\t\t\t\tmin = Math.min(min, 1 + temp(start + 1, newA));
\t\t\t\t}
\t\t\t}
\t\t\tmap[tA] = min;
\t\t\treturn min;
\t\t}
\t}
};
```

LeetCode题解854. 相似度为 K 的字符串

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制

LeetCode题解黑白圆盘

一个圆盘被涂上了黑白二色,两种颜色各占一个半圆。圆盘以一个未知的速度、按一个未知的方向旋转。你有一种特殊的相机可以让你即时观察到圆上的一个点的颜色。你需要多少个相机才能确定圆盘旋转的方向?题解:可以用一个相机即可

LeetCode题解圆上任取三点构成锐角三角形的概率

来自字节跳动的一道几何题题解:1/4

LeetCode题解深度优先遍历和回溯的关系?

深度优先遍历的范围更大还是回溯的范围更大?为什么?题解:我的理解是:dfs是回溯思想的一种体现- 回溯:是在整个搜索空间中搜索出可行解,在搜索过程中不断剪枝回退,这是回溯的思想,这个搜索空间并没有限制于特定的数据结构。- dfs:dfs是指特定的数据结构中如图,树(特殊的图)中搜索答案,范围限制在了特定的数据结构。个人拙见。

LeetCode题解盲人买袜子。

他们都各自买了两对黑袜和两对白袜,八对袜子的布质、大小完全相同,而每对袜子都有一张商标纸连着。两位盲人不小心将八对袜子混在一起。他们每人怎样才能取回黑袜和白袜各两对呢?题解:暴力破解, 把袜子都拆开 一人一只 哈哈