剑指offer-0x04
#include <iostream>
using namespace std;
void ReplaceBlank(char str[], int length)
{
if(str == NULL || length<=0)
return;
int originalLength = 0;
int numofBlank = 0;
int i = 0;
//计算原字符串的长度,并统计空格个数
while(str[i]!= '\0')
{
originalLength ++;
if(str[i] == ' ')
numofBlank ++;
i++;
}
//每替换一个空格,长度增加2
int newlength = originalLength + numofBlank * 2;
if(newlength>length)
return;
int indexofOriginal = originalLength;
int indexofNew = newlength;
while(indexofOriginal>=0 && indexofNew>indexofOriginal)
{
if(str[indexofOriginal]==' ')
{
str[indexofNew--]='0';
str[indexofNew--]='2';
str[indexofNew--]='%';
}
else
str[indexofNew--]=str[indexofOriginal];
indexofOriginal--;
}
}
int main()
{
char str[]="hello world hello c++";
ReplaceBlank(str,100);
cout << "result is "<< str<<endl;
return 0;
}
keep calm and carry on
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步