9 const std::size_t str1_len = str1.size();
10 const std::size_t str2_len = str2.size();
11 std::vector edit_distances(str1_len + 1, std::vector<std::size_t>(str2_len + 1, 0));
13 for (std::size_t i = 0; i < str1_len + 1; i++)
14 edit_distances[i][0] = i;
16 for (std::size_t j = 0; j < str2_len + 1; j++)
17 edit_distances[0][j] = j;
19 for (std::size_t i = 1; i < str1_len + 1; i++)
21 for (std::size_t j = 1; j < str2_len + 1; j++)
23 const std::size_t indicator = str1[i - 1] == str2[j - 1] ? 0 : 1;
24 edit_distances[i][j] = std::min({
25 edit_distances[i - 1][j] + 1,
26 edit_distances[i][j - 1] + 1,
27 edit_distances[i - 1][j - 1] + indicator
32 return edit_distances[str1_len][str2_len];
ARK_API long countOpenEnclosures(const std::string &line, char open, char close)
Count the open enclosure and its counterpart: (), {}, [].