diff --git a/levenshtein.cpp b/levenshtein.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b7d0c778236a8564a10656c7242f87807a18815a --- /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 bc8f460d02aeb0695e7840121bc4caefe788a878..f2b0a5e113f5e288114f8c6b00a80b576cea3310 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; }