题目描述:将字符串"this is a string!"中的空格替换为@@
C代码:o(n)时间复杂度,就是通过遍历找到空格个数,创建新旧两个指针,分别指向老的尾元素和新的尾元素,如果老的尾元素不是空格则替换,如果是老指针-1,新指针所指向的位置加上@@
#include <stdio.h>
char *change(char *c,int len)
{
int count=0;
char *ret=c;
for(int i=0;i<len;i++)
{
if(c[i]==' ')
{
count++;
}
}
int newLen=len+count;
c[newLen--]='\0';
for(int j=len-1;j>=0;)
{
if(c[j]==' ')
{
c[newLen--]='@';
c[newLen--]='@';
j--;
}else
{
c[newLen--]=c[j--];
}
}
return ret;
}
int main(){
char str[]="this is a string!";
int len=sizeof(str)/sizeof(str[0]);
char *ret= change(str,len);
for(int i=0;ret[i]!='\0';i++)
{
printf("%c",ret[i]);
}
}