-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdeletion-distance.js
51 lines (44 loc) · 1.08 KB
/
deletion-distance.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
function solution(str1, str2) {
var arr1 = str1.split("");
var arr2 = str2.split("");
var map2 = new Map();
var counter = 0;
var str2_pos = 0;
for (let i = 0; i < arr2.length; i++) {
if (map2.has(arr2[i])) {
var existing = map2.get(arr2[i]);
existing.push(i);
map2.set(arr2[i],existing);
} else {
map2.set(arr2[i],[i]);
}
}
// console.log(map2)
for (let i = 0; i < arr1.length; i++) {
if (!map2.has(arr1[i])) {
counter++;
} else {
var existing = map2.get(arr1[i]);
var diff = existing[0] - str2_pos;
// console.log(diff)
if (diff > 0) {
if (str2_pos === 0) {
counter += existing[0]
} else {
counter += (existing[0] - str2_pos)
}
}
str2_pos = existing[0] + 1;
existing.splice(0, 1);
if (existing.length === 0) {
map2.delete(arr1[i]);
} else {
map2.set(arr1[i], existing);
}
}
}
counter += str2.length - str2_pos;
return counter;
}
var str1 = "dog", str2 = "frog"
console.log(solution(str1,str2));