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

实现功能为把字符串中的空格换成"%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
个人分类: C++习题练习
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭