如果顺序无所谓的话,排下序会方便很多。
否则的话,我觉得 8楼 的想法也行吧。
否则的话,我觉得 8楼 的想法也行吧。
#include <stdio.h> #include <string.h> #include <stdlib.h> char* and_dynamic(const char* str1, const char* str2); char* and_buffer(const char* str1, const char* str2, char* buffer); char* and_dynamic(const char* str1, const char* str2) { char* buffer = (char*)malloc(strlen(str1) + strlen(str2) + 1); /* Use buffer version */ return and_buffer(str1, str2, buffer); } char* and_buffer(const char* str1, const char* str2, char* buffer) { int table[256] = { 0 }; char* p = buffer; int i; while (*str1) ++table[*str1++]; while (*str2) ++table[*str2++]; for (i = 0; i < 256; ++i) if (table[i]) *p++ = i; *p = '\0'; return buffer; } int main(void) { char buffer[1024]; puts(and_buffer("abcdde", "bcdfg", buffer)); char* result = and_dynamic("abcdde", "bcdfg"); puts(result); free(result); /* Don't forget this */ return 0; }查表即可,简洁就是美。