写一个函数fn(),功能是传一个参数是字符串,查找里面有没有相同的字符,有的话返回1,否则0.
两种方法,一是效率最高的,二是最节省内存的.
int fn0(const char *str)
{
char num[256] = {0};
unsigned char *pos = (unsigned char *)str;
while (*pos != 0 && num[*pos] == 0) {
num[*pos++] = 1;
}
return *pos == 0 ? 0 : 1;
}
int fn1(const char *str)
{
const char *p1, *p2;
if (*str == 0)
return 0;
for (p1 = str; *p1 != 0; p1++) {
for (p2 = p1 + 1; *p2 != 0; p2++) {
if (*p1 == *p2)
return 1;
}
}
return 0;
}
改进:fn0中的num[256]可以用num[32]来代替,256是用字节做标记的,32是用位做标记。
阅读(1906) | 评论(0) | 转发(0) |