#include "levenshtein.h" #include size_t max(size_t a, size_t b) { if (a >= b) { return a; } return b; } size_t min(size_t a, size_t b) { if (a <= b) { return a; } return b; } size_t min_3(size_t a, size_t b, size_t c) { if (a <= b) { if (a <= c) { return a; } return c; } else { if (b <= c) { return b; } return c; } } size_t my_strlen(const char *s) { size_t i; for (i = 0; s[i]; i++) { continue; } return i; } size_t levenshtein(const char *s1, const char *s2) { size_t l1 = my_strlen(s1); size_t l2 = my_strlen(s2); if (min(l1, l2) == 0) { return max(l1, l2); } if (s1[0] == s2[0]) { return levenshtein(s1 + 1, s2 + 1); } size_t lev1 = levenshtein(s1 + 1, s2); size_t lev2 = levenshtein(s1, s2 + 1); size_t lev3 = levenshtein(s1 + 1, s2 + 1); return 1 + min_3(lev1, lev2, lev3); }