#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
*/