#include <iostream>
#include <vector>
#include <algorithm>
bool haveCommonSubstring(const std::vector<std::string>& a, const std::vector<std::string>& b) {
for (size_t i = 0; i < a.size(); i++) {
const std::string& substringA = a[i];
const std::string& substringB = b[i];
bool foundCommon = false;
for (char c : substringA) {
if (substringB.find(c) != std::string::npos) {
foundCommon = true;
break;
}
}
if (!foundCommon) {
return false;
}
}
return true;
}
int main() {
std::vector<std::string> a = {"ab", "cd", "ef"};
std::vector<std::string> b = {"af", "ee", "ef"};
std::cout << std::boolalpha << haveCommonSubstring(a, b) << std::endl; // Output: true
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKYm9vbCBoYXZlQ29tbW9uU3Vic3RyaW5nKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgYSwgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBiKSB7CiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGEuc2l6ZSgpOyBpKyspIHsKICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3Vic3RyaW5nQSA9IGFbaV07CiAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN1YnN0cmluZ0IgPSBiW2ldOwogICAgICAgIGJvb2wgZm91bmRDb21tb24gPSBmYWxzZTsKCiAgICAgICAgZm9yIChjaGFyIGMgOiBzdWJzdHJpbmdBKSB7CiAgICAgICAgICAgIGlmIChzdWJzdHJpbmdCLmZpbmQoYykgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKICAgICAgICAgICAgICAgIGZvdW5kQ29tbW9uID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIWZvdW5kQ29tbW9uKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHRydWU7Cn0KCmludCBtYWluKCkgewogICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGEgPSB7ImFiIiwgImNkIiwgImVmIn07CiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gYiA9IHsiYWYiLCAiZWUiLCAiZWYifTsKCiAgICBzdGQ6OmNvdXQgPDwgc3RkOjpib29sYWxwaGEgPDwgaGF2ZUNvbW1vblN1YnN0cmluZyhhLCBiKSA8PCBzdGQ6OmVuZGw7IC8vIE91dHB1dDogdHJ1ZQoKICAgIHJldHVybiAwOwp9Cg==