【C++】字符串替换问题
核心思想,在不另外占内存的情况下,怎样替换一个字符串中的指定元素,实例代码为替换空字符串为%20.
示例代码如下:
#include <iostream>
using namespace std;
class Solution {
public:
void replaceSpace(char *str)
{
if (str == NULL)//判断字符串是否为空
return;
int fullstr = 0;//保存输入的字符串数量,包括空字符串
int emptystr = 0;//保存空字符串数量
int i = 0;
while( '\0' != str[i])
{
++fullstr;
if( str[i] == ' ')
++emptystr;
++i;
}
int outputStrlength = fullstr + emptystr * 2;//在原来的基础上开辟新字符串的空间
while (fullstr >= 0)
{
if (str[fullstr] == ' ')
{
str[outputStrlength--] = '0';
str[outputStrlength--] = '2';
str[outputStrlength--] = '%';
}
else
{
str[outputStrlength--] = str[fullstr];
}
fullstr--;
}
}
};
int main()
{
char str1[20] = "DDD DDD d ";
cout << "输出的字符串为:\t" << str1 << endl;
Solution sl;
sl.replaceSpace(str1);
cout << "输出的字符串为:\t" << str1 << endl;
return 0;
}