K-Similar Strings LeetCode solution in C++

1
class Solution {
2
public:
3
unordered_map<string, int> m;
4
int solve(string &s1, string &s2, int i) {
5
if (i == s1.length()) return 0;
6
if (m.find(s1) != m.end()) return m[s1];
7
if (s1[i] == s2[i]) return m[s1] = solve(s1, s2, i + 1);
8
int ans = 1e5;
9
for (int j = i + 1; j < s1.length(); j++) {
10
if (s1[j] == s2[i]) {
11
swap(s1[j], s1[i]);
12
ans = min(ans, 1 + solve(s1, s2, i + 1));
13
swap(s1[j], s1[i]);
14
}
15
}
16
return m[s1] = ans;
17
}
18
int kSimilarity(string s1, string s2) {
19
return solve(s1, s2, 0);
20
}
21
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0