Skip to content

Commit 9fcc03e

Browse files
authored
Create 854-k-similar-strings.js
1 parent cb07316 commit 9fcc03e

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

854-k-similar-strings.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* @param {string} A
3+
* @param {string} B
4+
* @return {number}
5+
*/
6+
const kSimilarity = function(A, B) {
7+
if (A === B) return 0
8+
let arr = [[B, 0]]
9+
while (arr.length > 0) {
10+
let len = arr.length
11+
for (let i = 0; i < len; i++) {
12+
let [cur, step] = arr.shift()
13+
for (let i = 0; i < cur.length; i++) {
14+
if (cur[i] === A[i]) continue
15+
for (let j = i + 1; j < cur.length; j++) {
16+
if (cur[j] !== A[i]) continue
17+
let newStr =
18+
cur.substring(0, i) +
19+
cur[j] +
20+
cur.substring(i + 1, j) +
21+
cur[i] +
22+
cur.substring(j + 1)
23+
if (newStr === A) return step + 1
24+
if (cur[i] === A[j]) arr.unshift([newStr, step + 1])
25+
else arr.push([newStr, step + 1])
26+
}
27+
break
28+
}
29+
}
30+
}
31+
}

0 commit comments

Comments
 (0)