請實現一個函數,把字符串中的每個空格替換成“20%”。 -开发者知识库

請實現一個函數,把字符串中的每個空格替換成“20%”。 -开发者知识库,第1张

思路:我們從字符串的末尾開始復制和替換。

          1、定義兩個指針,p1和p2。p1指向原始字符串的末尾,p2指向替換后字符串的末尾。

          2、向前移動指針p1,逐個把它指向的字符復制到p2指向的位置,直到碰到第一個空格為止。碰到第一個空格后,p1向前移動一格,然后在p2之前插入字符串“20%”。同時也要把p2向前移動3格。

          3、重復第2步,直到p1和p2指向同一位置,說明所有空格都已替換完。

請實現一個函數,把字符串中的每個空格替換成“20%”。 -开发者知识库,第2张

#include<iostream>
#include<string>
using namespace std;

void ReplaceBlank(string& str, int len)
{
if (len <= 0)
return;
int countBlank = 0;
//統計字符串中空格的個數
for (int i = 0; i <len; i)
{
if (str[i] ==' ' )
{
countBlank;
}
}
int newLength = len countBlank * 2;//計算新字符串長度
if (newLength == len)
return;
int oldIndex = len-1;//指向原始字符串結尾
int newIndex = newLength-1;//指向替換后字符串結尾
str.resize(newLength);//將字符串的容量一次性擴到新的大小
while (oldIndex>=0 && newIndex>oldIndex)
{
if (str[oldIndex] == ' ')
{
str[newIndex--] = '0';
str[newIndex--] = '2';
str[newIndex--] = '%';
}
else
{
str[newIndex--] = str[oldIndex];
}
--oldIndex;
}
}
int main()
{
string str = "hello world ";
int len =str.size() ;
ReplaceBlank(str,len);
cout << str << endl;
return 0;
}


請實現一個函數,把字符串中的每個空格替換成“20%”。 -开发者知识库,第3张

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复