这里提供一种全新的思路
因为考虑到数组变换内部一个数值其实需要o(n)的时间维度,因此要尽可能的少的进行整个数组的变动。
有一种解决方法是另建立一个暂时的数组进行暂存,筛选结束后进行复制,但这样在空间维度上需要o(n)。
这里采用一种虚拟的另设数组的方式,最后时间维度是o(n),空间维度是o(1)。
void delchar( char *str, char c ){
int i,j;
i=j=0;
while(str[j]){
if(str[j] == c){
j++;
continue;
}
str[i] = str[j];
}
}
因为考虑到后面的结果其实不会对前面的造成影响,因此在这是逐个处理添加的方式,同时以虚拟标号j来代替新建的数组,倘若非c则进行复制,c则跳过,下一个非c再进行复制。
代码没有跑过(因为是复习的时候看见的,作业已经不能提交了)
但是提供一种新思路