查找字符串里面有没有相同的字符- -

在chinaunix论坛里看到的,真的很精妙:

写一个函数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;
}

 
posted @ 2007-03-27 23:00  MXi4oyu  阅读(207)  评论(0编辑  收藏  举报