C语言——字符串中的问题

| |
[不指定 2009/06/14 10:28 | by 木须 ]
删除一个字符串中的多余空格问题
2008-09-19 18:46:51
//形如:ab  c d    e的一个字符串,其中b和c之间有2个空格,c和d之间有一个空格,d和e之间有4个空格

//现在要删除b和c之间多余的一个空格,删除d和e之间多余的3个空格.

//变成形如:ab c d e的输出结果.

//具体算法如下:

char * IgnoreExtraTable(char * str)

{

    char *temp;

    temp = (char *)malloc(strlen(str) * sizeof(str));

    if(!temp)  return ERROR;

    memset(temp, '\0', strlen(str));

    *temp = *str++;

    while(*str != '\0')

    {

         if(*str != *temp)

         {

              *++temp = *str++;

         }

         else

         {

              str++;

         }

    }

    return temp;

}

//程序点评:其实这个程序可以看成是一个队列的问题,取一个元素和队列的对尾元素进行比较,如果两者不等,就将这个元素插到队列中,如果两者相等,就抛弃该元素,进行下面一个元素的插入.最后队列中的所有元素就是要求得串.

删除一个字符串中的重复字符
2008-09-19 19:14:43
//形如:abadabccdfacdb的一个字符串,现在要将里面重复的字符给删除

//得到一个形如:abdcf的一个字符串

具体算法如下:

char * DeleteDoubleElem(char * str)

{

   int i;

   char *temp;

   temp = (char *)malloc(strlen(str) * sizeof(str));

   if(!temp)  return ERROR;

   memset(temp, '\0', strlen(str));

   for(i = 0; i < strlen(str) - 1; i ++)

   {

       if(str[i] != '0')

       {

           for(j = i + 1; j < strlen(str); j ++)

           {

               if(str[j] != '0')

               {

                    if(str[j] == str[i])

                    {

                         str[j] = '0';

                    }

               }

           }

       }

   }

   while(*str != '\0')

   {

       if(*str != '0')

       {

            *temp++ = *str++;

       }

       else

       {

            str++;

       }

   }

   return temp;

}

//程序点评:这段程序的执行效率是很高的!它的基本思想是做标志位,如果在后面的扫描中发现了和前面的基准元素相等就将该位置为0,最后只需要将串中不是0的字符输出就可以了.但是,有个情况是如果基准元素是0就不用再以0位基准元素向后面扫描了,而是查找一个不为0的基准元素,再向后扫描.本程序这一点也考虑在内了.

最新日志 随机日志 综合排行
  • 小小的看一下星座——...
  • 写给即将离开的鱼山校...
  • 圣诞老人的传说
  • 开车的~来看看行车安...
  • 让你拥有~好心情
  • 女生百科
  • 生活小贴士,很不错哦...
  • 生活小秘诀~偏方大集...
  • 健康养生之酸奶篇
  • 五分钟轻松做早餐:三...
  • 神奇的图片——让你头...
  • Enya专辑列表(二...
  • 变不变扁的问题
  • 道乐堂的招财猫~~我...
  • 小时代》连载16 -...
  • 永远的恩雅,永远的天...
  • 激动——中国体操女团
  • 向大家介绍一下跆拳道...
  • 漂亮的剪纸和年画
  • 衣物去污指南(二)
  • 《战栗的乐谱》中的插...
  • 8月1日的日全食的感...
  • 小时代 连载2 郭敬...
  • 永远的恩雅,永远的天...
  • 写给我暂时失意的的死...
  • 数独——锻炼你的脑细...
  • 2008北京奥运会奖...
  • 小时代1.0折纸时代...
  • 小时代 连载3 郭敬...
  • 某天早晨起来以后的影...
  • Tags: ,
    资料 | 评论(0) | 引用(0) | 阅读(169)
    发表评论
    表情
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    打开HTML
    打开UBB
    打开表情
    隐藏
    昵称   密码   游客无需密码
    网址   电邮   [注册]