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