Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1501029
  • 博文数量: 213
  • 博客积分: 10418
  • 博客等级: 上将
  • 技术积分: 3358
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-09 23:49
文章分类

全部博文(213)

文章存档

2014年(1)

2013年(5)

2012年(11)

2011年(2)

2010年(8)

2009年(26)

2008年(160)

分类: C/C++

2008-10-27 22:55:40

写一个函数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) |
给主人留下些什么吧!~~