这个题解来源于官方题解!
char** commonChars(char** A, int ASize, int* returnSize) {
int minfreq[26], freq[26];
for (int i = 0; i < 26; ++i) {
minfreq[i] = INT_MAX;
freq[i] = 0;
}
for (int i = 0; i < ASize; ++i) {
memset(freq, 0, sizeof(freq));
int n = strlen(A[i]);
for (int j = 0; j < n; ++j) {
++freq[A[i][j] - 'a'];
}
for (int j = 0; j < 26; ++j) {
minfreq[j] = fmin(minfreq[j], freq[j]);
}
}
int sum = 0;
for (int i = 0; i < 26; ++i) {
sum += minfreq[i];
}
char** ans = malloc(sizeof(char*) * sum);
*returnSize = 0;
for (int i = 0; i < 26; ++i) {
for (int j = 0; j < minfreq[i]; ++j) {
ans[*returnSize] = malloc(sizeof(char) * 2);
ans[*returnSize][0] = i + 'a';
ans[*returnSize][1] = 0;
(*returnSize)++;
}
}
return ans;
}