How to find the longest common prefix in a vector of strings in C++

1 Answer

0 votes
#include <iostream>
#include <vector>

std::string prefix(std::string result, std::string vecstr) {
    std::string prefixstr;
    int sizer = result.length();
    int sizevstr = vecstr.length();
    
    for (int i = 0, j = 0; (i <= sizer - 1) && (j <= sizevstr - 1); i++, j++) {
        if (result[i] != vecstr[j]) {
            break;
        }
        prefixstr.push_back(result[i]); 
    }
    return prefixstr;
}
std::string common_prefix(std::vector<std::string> vec) {
    std::string result = vec[0];
    for (int i = 1; i <= vec.size() - 1; i++) {
        result = prefix(result, vec[i]);
    }
    return result;
}
 
int main()
{
    std::vector<std::string> vec = {"cartography", "carburettor", "carbonating", "cardholder", "caramelize"};
    
    std::string result = common_prefix(vec);
    
    std::cout << result;
}



/*
run:
  
car
  
*/

 



answered Aug 27, 2023 by avibootz
...