欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实现一个函数,把字符串里面的空格换成一串字符

程序员文章站 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++;
	}
}

相关标签: 2018.05.17