/***************************************************************************************
删除字符串中的数字并压缩字符串
题目:删除字符串中的数字并压缩字符串 。
如字符串”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;
}
笔试:删除字符串中的数字并压缩字符串
最新推荐文章于 2021-11-01 16:50:25 发布