From d2f074fde13dafa08c382da531b172d04db12e55 Mon Sep 17 00:00:00 2001 From: R0CKB0TT0M <davidusw9@gmail.com> Date: Fri, 14 Apr 2023 00:50:30 +0200 Subject: [PATCH] added implementation of levenshtein distance --- levenshtein.cpp | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ main.cpp | 5 ++++- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 levenshtein.cpp diff --git a/levenshtein.cpp b/levenshtein.cpp new file mode 100644 index 0000000..b7d0c77 --- /dev/null +++ b/levenshtein.cpp @@ -0,0 +1,50 @@ +#include <iostream> + +using namespace std; +int levenshteinDistance(string a, string b) +{ + //get length of strings + int aLen = a.length(); + int bLen = b.length(); + + // create Matrix for Levenshtein Distance + int** matrix = new int*[aLen]; + + //initialise Matrix + for (int i = 0;i < aLen;i++){ + matrix[i] = new int[bLen]; + matrix[i][0] = i; + } + for (int j = 0;j< bLen;j++){ + matrix[0][j]= j; + } + + //print Matrix + for (int i = 0; i < aLen; i++) { + for (int j = 0; j < bLen; j++) { + cout << matrix[i][j] << ":"; + } + cout << std::endl; + } + //fill Matrix + for (int i = 1; i < aLen; i++) { + for (int j = 1; j < bLen; j++) { + int c = 1; + if (a[i] == b[j]){ + c = 0; + } + int rep = matrix[i-1][j-1] + c; + int ins =matrix[i][j-1] + 1; + int del = matrix[i-1][j] + 1; + matrix[i][j]=min({rep,ins,del}); + }} + + //print Matrix + for (int i = 0; i < aLen; i++) { + for (int j = 0; j < bLen; j++) { + cout << matrix[i][j] << ";"; + } + cout << std::endl; + } + return matrix[aLen-1][bLen-1]; +} \ No newline at end of file diff --git a/main.cpp b/main.cpp index bc8f460..f2b0a5e 100644 --- a/main.cpp +++ b/main.cpp @@ -1,6 +1,9 @@ #include <iostream> +#include "levenshtein.cpp" +using namespace std; int main() { - std::cout << "Hello, World!" << std::endl; + int distance = levenshteinDistance("test","testtest"); + cout << "the distance is" << distance << endl << flush; return 0; } -- GitLab