实现一个函数,把字符串里面的空格换成一串字符
程序员文章站
2022-05-29 15:46:27
...
实现功能为把字符串中的空格换成"%20",比如"1 234"转化为"1%20234"
1,这个题目首先需要我们知道扩展后的字符串的长度,其实就是原有的长度加上二倍的空格个数
2,两种方式,第一种就是从第一个字符串依次往后往后移动,第二种是从最后一个字符依次往后移动。第一种方式复杂度高,字符需要移动多次,而第二种方式,每个字符只需要移动一次即可,复杂度低,在这里我采用的是第二种方式
代码如下
#include <iostream>
using namespace std;
void StringExterd(char A[],int length)
{
int length_Before = 0;//原数组长度
int length_Blank = 0;//空格个数
int length_new = 0;//扩展后的数组长度
int i =0;
int count = 0 ;
if((A ==NULL)||(length<=0))
return;
while(A[i] != '\0')
{
length_Before++;
if(A[i] ==' ')
length_Blank++;
i++;
}
length_new = length_Before + length_Blank * 2;
int a = length_Before;
int b = length_new;
for(int m =a;m>=0;m--)
{
if(A[a]==' ')
{
A[length_new--]= '0';
A[length_new--]= '2';
A[length_new--]= '%';
}
else
{
A[length_new--] = A[a];
}
a--;
}
}
int main()
{
char A[10];
A[0] = 'H';
A[1] = 'E';
A[2] = 'L';
A[3] = 'L';
A[4] = 'O';
A[5] = ' ';
A[6] = 'W';
A[7] = 'O';
StringExterd(A,10);
int i =0;
while(A[i] !='\0')
{
cout<<A[i];
i++;
}
}
下一篇: 把一串字符转化为16位数