该文章主要介绍一些经典的C语言题型。目录1. 字符串1.1 公共字符1. 字符串1.1 公共字符题目给定一组字符串strings请计算有哪些字符在所有字符串中都出现过count次及以上。输入第一个参数是count1count100第二个参数是strings1strings.length1001strings[i].length1000strings[i]仅由英文和数字组成输出按ASCII码升序输出所有符合要求的字符如果没有符合要求的字符则输出空列表[ ]样例1输入2[“aabbccFFFx2x2”,”aaccddFFFFx2x2”,”aabcdFFFFx2x2”]输出: [“2”,”F”,”a”,”x”]代码实现#include stdio.h #include stdlib.h #include string.h static char *CommonChars(int count, char **strings, size_t stringsSize, size_t *returnSize) { int minFreq[128]; // 初始化为一个大值 for (int i 0; i 128; i) { minFreq[i] 1000; } // 遍历每个字符串 for (size_t i 0; i stringsSize; i) { int freq[128] {0}; char *str strings[i]; // 统计当前字符串频率 for(int j 0; str[j] ! \0; j) { freq[(int)str[j]]; } // 更新最小频率 for (int k 0; k 128; k) { if (freq[k] minFreq[k]) { minFreq[k] freq[k]; } } } // 分配结果空间最多128个字符 char *result (char *)malloc(128 * sizeof(char)); *returnSize 0; // 收集符合条件的字符按ASCII顺序 for (int i 0 ; i 128; i) { if (minFreq[i] count) { result[*returnSize] (char)i; (*returnSize); } } return result; } // 以下为一个例子 int main() { int count 2; char* strings[] {aabbccFFFx2x2, aaccddFFFFx2x2, aabcdFFFFx2x2}; size_t strSize 3; size_t retSize; char* res CommonChars(count, strings, strSize, retSize); // 按题目格式输出 printf([); for (int i 0; i retSize; i) { if (i 0) printf(,); printf(\%c\, res[i]); } printf(]\n); free(res); // 释放内存 return 0; }
经典的C语言题型
该文章主要介绍一些经典的C语言题型。目录1. 字符串1.1 公共字符1. 字符串1.1 公共字符题目给定一组字符串strings请计算有哪些字符在所有字符串中都出现过count次及以上。输入第一个参数是count1count100第二个参数是strings1strings.length1001strings[i].length1000strings[i]仅由英文和数字组成输出按ASCII码升序输出所有符合要求的字符如果没有符合要求的字符则输出空列表[ ]样例1输入2[“aabbccFFFx2x2”,”aaccddFFFFx2x2”,”aabcdFFFFx2x2”]输出: [“2”,”F”,”a”,”x”]代码实现#include stdio.h #include stdlib.h #include string.h static char *CommonChars(int count, char **strings, size_t stringsSize, size_t *returnSize) { int minFreq[128]; // 初始化为一个大值 for (int i 0; i 128; i) { minFreq[i] 1000; } // 遍历每个字符串 for (size_t i 0; i stringsSize; i) { int freq[128] {0}; char *str strings[i]; // 统计当前字符串频率 for(int j 0; str[j] ! \0; j) { freq[(int)str[j]]; } // 更新最小频率 for (int k 0; k 128; k) { if (freq[k] minFreq[k]) { minFreq[k] freq[k]; } } } // 分配结果空间最多128个字符 char *result (char *)malloc(128 * sizeof(char)); *returnSize 0; // 收集符合条件的字符按ASCII顺序 for (int i 0 ; i 128; i) { if (minFreq[i] count) { result[*returnSize] (char)i; (*returnSize); } } return result; } // 以下为一个例子 int main() { int count 2; char* strings[] {aabbccFFFx2x2, aaccddFFFFx2x2, aabcdFFFFx2x2}; size_t strSize 3; size_t retSize; char* res CommonChars(count, strings, strSize, retSize); // 按题目格式输出 printf([); for (int i 0; i retSize; i) { if (i 0) printf(,); printf(\%c\, res[i]); } printf(]\n); free(res); // 释放内存 return 0; }