mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-04-27 07:48:01 -07:00
--------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de> Co-authored-by: ebbit1q <ebbit1q@gmail.com>
25 lines
655 B
C++
25 lines
655 B
C++
#include "levenshtein.h"
|
|
|
|
#include <algorithm>
|
|
#include <vector>
|
|
|
|
int levenshteinDistance(const QString &s1, const QString &s2)
|
|
{
|
|
int len1 = s1.size();
|
|
int len2 = s2.size();
|
|
std::vector<std::vector<int>> dp(len1 + 1, std::vector<int>(len2 + 1));
|
|
|
|
for (int i = 0; i <= len1; i++)
|
|
dp[i][0] = i;
|
|
for (int j = 0; j <= len2; j++)
|
|
dp[0][j] = j;
|
|
|
|
for (int i = 1; i <= len1; i++) {
|
|
for (int j = 1; j <= len2; j++) {
|
|
int cost = (s1[i - 1] == s2[j - 1]) ? 0 : 1;
|
|
dp[i][j] = std::min({dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + cost});
|
|
}
|
|
}
|
|
|
|
return dp[len1][len2];
|
|
}
|