如果顺序无所谓的话,排下序会方便很多。
否则的话,我觉得 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;
}查表即可,简洁就是美。
