替换空格

来源:互联网 发布:网络主播合作寻求合作 编辑:程序博客网 时间:2024/06/11 23:08

题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.",则输出“We%20are%20happy."。

解答:首先计算出字符串的长度n=strlen(str),然后统计出空格的个数sum,新字符的长度为n+2*sum。再将字符串中的元素后移(先从后面开始)。

设置两个指针,一个指向原字符的末尾,另一个指向新字符的末尾,如果原字符元素为空格,将新字符赋值为%20,否则直接赋值个新字符。

void Replace(char str[],int m){if(str==NULL||m<=0)return ;int n=strlen(str);int sum=0;for(int i=0;i<n;i++){if(str[i]==' ')sum++;}int j=strlen(str)-1+2*sum;if(j>m)return ;i=strlen(str)-1;while(j>i){if(str[i]==' '){str[j--]='0';str[j--]='2';str[j--]='%';i--;}elsestr[j--]=str[i--];}cout<<str<<endl;}
相关题目:

有两个排序的数组A1和A2,内存中A1的末尾有足够多的空间容纳A2。实现一个函数,把A2中的所有数字插入到A1中并且所有的数字都是排序的。

假设数组是递增排序的,思路同上面的,确定数组A1,A2合并后到得新数组(占用A1的空间)的长度。设置三个指针i,j,k,分别指向A1的末尾,A2的末尾,新数组的末尾,比较A1[i]和A2[j]

如果A1[i]>A2[j],A1[k]=A1[i];

否则A1[k]=A2[j]。

0 0
原创粉丝点击