MCPcopy Create free account
hub / github.com/ObEngine/ObEngine / distance

Function distance

src/Core/Utils/StringUtils.cpp:147–185  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

145 }
146
147 std::size_t distance(std::string_view source, std::string_view target)
148 {
149 if (source.size() > target.size())
150 {
151 return distance(target, source);
152 }
153
154 const std::size_t min_size = source.size(), max_size = target.size();
155 std::vector<std::size_t> lev_dist(min_size + 1);
156
157 for (std::size_t i = 0; i <= min_size; ++i)
158 {
159 lev_dist[i] = i;
160 }
161
162 for (std::size_t j = 1; j <= max_size; ++j)
163 {
164 std::size_t previous_diagonal = lev_dist[0];
165 ++lev_dist[0];
166
167 for (std::size_t i = 1; i <= min_size; ++i)
168 {
169 const std::size_t previous_diagonal_save = lev_dist[i];
170 if (source[i - 1] == target[j - 1])
171 {
172 lev_dist[i] = previous_diagonal;
173 }
174 else
175 {
176 lev_dist[i] = std::min(std::min(lev_dist[i - 1], lev_dist[i]),
177 previous_diagonal)
178 + 1;
179 }
180 previous_diagonal = previous_diagonal_save;
181 }
182 }
183
184 return lev_dist[min_size];
185 }
186
187 std::vector<std::string> sortByDistance(const std::string& source,
188 const std::vector<std::string>& words, std::size_t limit)

Callers 4

sortByDistanceFunction · 0.85
size_hasMethod · 0.85

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected