题目描述:
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
#include<iostream>
#include<string>
#include <windows.h>
using namespace std;
/*主体部分*/
class Solution
{
public:
void replaceSpace(char *str, int length) //str(char*型)是字符串首地址,length是限定长度,自己设定,不是初始字符串的长度
{
if (str == NULL||length<=0)
return;
int CountOfBlanks = 0;
int Originallength = 0;
for (int i = 0; str[i] != '\0'; i++)//遍历字符串,记录空格数和非空格数
{
Originallength++;
if (str[i] == ' ')
CountOfBlanks++;
}
int len = Originallength + 2 * CountOfBlanks;//‘%’‘2’‘0’分别占一个字符
if (len >length)
return;
while (Originallength >= 0 && len > Originallength)
{
if (str[Originallength] == ' ')
{
str[len--] = '0';
str[len--] = '2';
str[len--] = '%';
}
else
{
str[len--] = str[Originallength];
}
Originallength--;
}
}
};
/*测试部分*/
int main()
{
cout << "Please enter a string: ";
string inputline;
getline(cin, inputline); //从键盘中输入一行字符串
char *c = nullptr; //定义一个char*型指针,赋值为空
const char*constc = nullptr; //定义一个const char*型指针,赋值为空
constc = inputline.c_str(); //inputline.c_str()是字符串inputline的首地址//string类型转const char*类型
c = const_cast<char*>(constc); //const char*类型转char*类型
Solution solution; //实例化类
int length = 3 * inputline.length(); //设定length可能取得最大值(字符串中全为空格时的情况)
solution.replaceSpace(c, length);
cout << c;
Sleep(5000);
}
测试结果: