1
0
mirror of https://github.com/CLIUtils/CLI11.git synced 2025-04-29 20:23:55 +00:00

change to size_t for levenshteinDistance

This commit is contained in:
Philip Top 2025-04-22 18:26:53 -07:00
parent 2f59ab8cfa
commit ae0735c88c

View File

@ -13,7 +13,7 @@
#include <utility> #include <utility>
#include <vector> #include <vector>
int prefixMatch(const std::string& s1, const std::string& s2) std::size_t prefixMatch(const std::string& s1, const std::string& s2)
{ {
if (s1.size() < s2.size()) if (s1.size() < s2.size())
{ {
@ -37,14 +37,14 @@ int prefixMatch(const std::string& s1, const std::string& s2)
} }
// Levenshtein distance function code generated by chatgpt // Levenshtein distance function code generated by chatgpt
int levenshteinDistance(const std::string &s1, const std::string &s2) { std::size_t levenshteinDistance(const std::string &s1, const std::string &s2) {
size_t len1 = s1.size(), len2 = s2.size(); size_t len1 = s1.size(), len2 = s2.size();
std::vector<std::vector<int>> dp(len1 + 1, std::vector<int>(len2 + 1)); std::vector<std::vector<std::size_t>> dp(len1 + 1, std::vector<std::size_t>(len2 + 1));
for(size_t ii = 0; ii <= len1; ++ii) for(size_t ii = 0; ii <= len1; ++ii)
dp[ii][0] = static_cast<int>(ii); dp[ii][0] = ii;
for(size_t jj = 0; jj <= len2; ++jj) for(size_t jj = 0; jj <= len2; ++jj)
dp[0][jj] = static_cast<int>(jj); dp[0][jj] = jj;
for(size_t i = 1; i <= len1; ++i) { for(size_t i = 1; i <= len1; ++i) {
for(size_t j = 1; j <= len2; ++j) { for(size_t j = 1; j <= len2; ++j) {
@ -63,10 +63,10 @@ int levenshteinDistance(const std::string &s1, const std::string &s2) {
enum class MatchType:std::uint8_t {proximity,prefix}; enum class MatchType:std::uint8_t {proximity,prefix};
// Finds the closest string from a list (modified from chat gpt code) // Finds the closest string from a list (modified from chat gpt code)
std::pair<std::string, int> findClosestMatch(const std::string &input, const std::vector<std::string> &candidates,MatchType match) { std::pair<std::string, std::size_t> findClosestMatch(const std::string &input, const std::vector<std::string> &candidates,MatchType match) {
std::string closest; std::string closest;
int minDistance = (std::numeric_limits<int>::max)(); int minDistance = (std::numeric_limits<std::size_t>::max)();
int distance=minDistance; std::size_t distance=minDistance;
for(const auto &candidate : candidates) { for(const auto &candidate : candidates) {
if (match == MatchType::proximity) if (match == MatchType::proximity)
{ {