如字符串”abc123de4fg56”处理后变为”abcdefg”。注意空间和效率。(下面的算法只需要一次遍历,不需要开辟新空间,时间复杂度为O(N))。
#include "stdafx.h"
void delNum(char *str)
{
int i, j=0;
// 找到串中第一个数字的位子
for(i=j=0; str && (str<'0' || str>'9'); j=++i)
;
// 从串中第一个数字的位置开始,逐个放入后面的非数字字符
for(; str; i++)
if(str<'0' || str>'9')
str[j++] = str;
str[j] = '\0';
}
int main(int argc, char* argv[])
{
char str[] = "abc123ef4g4h5";
printf("%s\n", str);
delNum(str);
printf("%s\n", str);
}
本文介绍了一个高效的C语言函数,该函数能够从输入的字符串中移除所有数字字符,并且不使用额外的空间。通过一次遍历即可完成操作,时间复杂度为O(N)。

被折叠的 条评论
为什么被折叠?



