替换空格
1.选择从前向后 替换空格
每次重复挪动;效率低;
算法时间复杂度 O(n²)
2.选择从前向后 替换空格
利用两个指针操作!!
1 void replaceSpace(char * str,int length) 2 { 3 if(str==NULL||length<=0) 4 return; 5 char * p1, *p2; 6 int k=0; 7 //首先遍历字符串 看有几个空格 8 9 for(int i=0;i<length;i++) 10 { 11 if(str[i]==32) //这么表示也可以 //ASCII .空格是32 12 k++; 13 } 14 int add=k*3-k;//后移字节大小 15 p1=str+length-1; 16 p2=str+length-1+add; 17 18 while (p2!=p1)//结束条件 19 { 20 21 if((*p1)!=32) 22 { 23 *p2=*p1; 24 25 p1--; 26 p2--;//向前移动 27 }else //遇到空格 28 { 29 *p2--='0'; 30 *p2--='2'; 31 *p2--='%'; 32 p1--; 33 } 34 35 }