// CPP Program to find all the common characters
// in n strings
#include <bits/stdc++.h>
using namespace std;
const int MAX_CHAR = 26;
void commonCharacters(string str[], int n)
{
// primary array for common characters
// we assume all characters are seen before.
bool prim[MAX_CHAR];
memset(prim, true, sizeof(prim));
// for each string
for (int i = 0; i < n; i++) {
// secondary array for common characters
// Initially marked false
bool sec[MAX_CHAR] = { false };
// for every character of ith string
for (int j = 0; str[i][j]; j++) {
// if character is present in all
// strings before, mark it.
if (prim[str[i][j] - 'a'])
sec[str[i][j] - 'a'] = true;
}
// copy whole secondary array into primary
memcpy(prim, sec, MAX_CHAR);
}
// displaying common characters
for (int i = 0; i < 26; i++)
if (prim[i])
printf("%c ", i + 'a');
}
// Driver's Code
int main()
{
string str[] = { "1123",
"453",
"567",
"8" };
int n = sizeof(str)/sizeof(str[0]);
commonCharacters(str, n);
return 0;
}
Ly8gQ1BQIFByb2dyYW0gdG8gZmluZCBhbGwgdGhlIGNvbW1vbiBjaGFyYWN0ZXJzIAovLyBpbiBuIHN0cmluZ3MgCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgCiAgCmNvbnN0IGludCBNQVhfQ0hBUiA9IDI2OyAKICAKdm9pZCBjb21tb25DaGFyYWN0ZXJzKHN0cmluZyBzdHJbXSwgaW50IG4pIAp7IAogICAgLy8gcHJpbWFyeSBhcnJheSBmb3IgY29tbW9uIGNoYXJhY3RlcnMgIAogICAgLy8gd2UgYXNzdW1lIGFsbCBjaGFyYWN0ZXJzIGFyZSBzZWVuIGJlZm9yZS4gCiAgICBib29sIHByaW1bTUFYX0NIQVJdOyAKICAgIG1lbXNldChwcmltLCB0cnVlLCBzaXplb2YocHJpbSkpOyAKICAKICAgIC8vIGZvciBlYWNoIHN0cmluZyAKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7IAogIAogICAgICAgIC8vIHNlY29uZGFyeSBhcnJheSBmb3IgY29tbW9uIGNoYXJhY3RlcnMgCiAgICAgICAgLy8gSW5pdGlhbGx5IG1hcmtlZCBmYWxzZSAKICAgICAgICBib29sIHNlY1tNQVhfQ0hBUl0gPSB7IGZhbHNlIH07IAogIAogICAgICAgIC8vIGZvciBldmVyeSBjaGFyYWN0ZXIgb2YgaXRoIHN0cmluZyAKICAgICAgICBmb3IgKGludCBqID0gMDsgc3RyW2ldW2pdOyBqKyspIHsgCiAgCiAgICAgICAgICAgIC8vIGlmIGNoYXJhY3RlciBpcyBwcmVzZW50IGluIGFsbCAgCiAgICAgICAgICAgIC8vIHN0cmluZ3MgYmVmb3JlLCBtYXJrIGl0LiAKICAgICAgICAgICAgaWYgKHByaW1bc3RyW2ldW2pdIC0gJ2EnXSkgCiAgICAgICAgICAgICAgICBzZWNbc3RyW2ldW2pdIC0gJ2EnXSA9IHRydWU7ICAKICAgICAgICB9IAogIAogICAgICAgIC8vIGNvcHkgd2hvbGUgc2Vjb25kYXJ5IGFycmF5IGludG8gcHJpbWFyeSAKICAgICAgICBtZW1jcHkocHJpbSwgc2VjLCBNQVhfQ0hBUik7IAogICAgfSAKICAKICAgIC8vIGRpc3BsYXlpbmcgY29tbW9uIGNoYXJhY3RlcnMgCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDI2OyBpKyspIAogICAgICAgIGlmIChwcmltW2ldKSAKICAgICAgICAgICAgcHJpbnRmKCIlYyAiLCBpICsgJ2EnKTsgCn0gCiAgCi8vIERyaXZlcidzIENvZGUgCmludCBtYWluKCkgCnsgCiAgICBzdHJpbmcgc3RyW10gPSB7ICIxMTIzIiwgCiAgICAgICAgICAgICAgICAgICAgIjQ1MyIsIAogICAgICAgICAgICAgICAgICAgICI1NjciLCAKICAgICAgICAgICAgICAgICAgICAiOCIgfTsgCiAgICBpbnQgbiA9IHNpemVvZihzdHIpL3NpemVvZihzdHJbMF0pOyAKICAgIGNvbW1vbkNoYXJhY3RlcnMoc3RyLCBuKTsgCiAgICByZXR1cm4gMDsgCn0g