笔试:删除字符串中的数字并压缩字符串

/***************************************************************************************
删除字符串中的数字并压缩字符串
题目:删除字符串中的数字并压缩字符串 。
如字符串”abc123de4fg56”处理后变为”abcdefg”。注意空间和效率。
分析:可用两个索引指向字符串的开头,
一个向后推进作为循环条件,另一个跨过数据向后推进。达到消除数据及压缩操作。
一快一慢,可称为快慢消除法。
*****************************************************************************************/
#include <stdio.h>
#define USE 1
#if USE
void ddc(char *s)
{
 int i = 0;
 int j = 0;
 while(s[i])
 {
  if(s[i]<'0' || s[i]>'9')
  {
   s[j++] = s[i];
  }
  i++;
 }
 s[j] = '\0';
}
#else
char *ddc(char *s)
{
 char *p = s;
 char *res = p;
 while(*s)
 {
  if(*s < '0' || *s > '9')
  {
   *p++ = *s;
  }
  s++;
 }
 *p = '\0';
 return res;
}

#endif

int main(void)
{
    //char *str = "abc123de4fg56"; segmentation fault。
    char str[] = "abc123de4fg56";
    #if USE
    ddc(str);
    printf("result is %s\n",str);
    #else
    printf("result is %s\n",ddc(str));
    #endif
    return 0;
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值