替换空格

题目:实现一个函数,把字符串的每个空格替换成“%20”。如"we are family.",输出为“we%20are%20family. 
(在原来的字符串上进行替换,并保证输入的字符串后面有足够多的空余内存。
1为何??
网络编程里,若URL参数中含特殊的字符,如空格,#等,会让服务器无法获取正确的参数值,则须将其转换成服务器可识别的字符,转换规则:‘%’+ASCII码的两位十六进制
     空格的ASCII码32,转换成16进制0x20
2实现
需要考虑时间的复杂度!!!以及覆盖问题
(1)若用直观的解法,从头到尾扫描字符串,每次碰到空格就替换,考虑覆盖问题,所以要把空格后面所有字符都后移两个字节。
若字符串长度为n,则时间复杂度为O(n^2)。
【2】从后往前进行替换。
(1)先遍历一遍字符串,统计字符串中空格的数目。
(2)计算替换空格后字符串的总长度
(3)从后面开始进行赋值与替换。
如何实现???
1定义两个指针,p1指向原字符串的末尾,p2指向替换后字符串的末尾
2然后向前移动p1,逐个将其指向的字符复制到p2指向的位置,直到碰到第一个空格。此时,将P1前移一格,,在p2前插入“%20”。此时p2需前移3个格,之后碰到后面的空格同上处理,直到p1和p2指向同一位置,表示所有空格替换完成。

代码的实现
#include <cstdio>
#include <cstring>
#include<iostream>
using namespace std;
void ReplaceBlank(char str[], int len)
{
     if (str == NULL && len <= 0)
     {
           return;
     }
     int firstLen = 0;//实际长度
     int countBlank = 0;//空格数
           int i = 0;
           while (str[i] != '\0')
           {
                ++firstLen;
                if (str[i] == ' ')
                {
                     ++countBlank;
                }
                ++i;
           }
           int newlen = firstLen + 2 * countBlank;
           if (newlen > len)
           {
                return;
           }
           int inFirst = firstLen;
           int inNew = newlen;
           while (inFirst >= 0 && inFirst < inNew)
           {
                if (str[inFirst] == ' ')
                {
                     str[inNew--] = '0';
                     str[inNew--] = '2';
                     str[inNew--] = '%';
                }
                else
                {
                     str[inNew--] = str[inFirst];
                }
                --inFirst;
           }
     
}
void main()
{
     const int len = 100;
     char str[len] = "we are family";
     ReplaceBlank(str, len);
     cout << str << endl;
}












【ACDC微电网的能源管理策略】微电网仿真模型包括光伏发电机、燃料电池系统、超级电容器和直流侧的电池,包括电压源变换器(VSC),用于将微电网的直流侧与交流侧相连接Simulink仿真实现内容概要:本文介绍了一个用于ACDC微电网能源管理策略的Simulink仿真模型,该模型集成了光伏发电机、燃料电池系统、超级电容器和直流侧电池等多种分布式能源,并通过电压源变换器(VSC)实现微电网直流侧与交流侧的连接。文档重点展示了微电网中多能源协调控制与能量管理的仿真方法,涵盖系统建模、能量调度策略设计及动态响应分析,旨在提高微电网运行的稳定性与能效。此外,文中还提及多种相关电力系统仿真案例,突出其在科研与工程实践中的应用价值。; 适合人群:具备一定电力系统、新能源技术及Simulink仿真基础的科研人员、电气工程专业研究生及从事微电网、分布式能源系统设计的工程技术人员。; 使用场景及目标:①用于微电网多能源系统建模与仿真,掌握VSC在交直流互联中的作用;②研究微电网能量管理策略,优化能源调度与系统稳定性;③作为科研项目或毕业设计的技术参考,支撑高水平论文复现与创新研究。; 阅读建议:建议结合Simulink实际操作,逐步构建模型并调试参数,重点关注各能源单元的控制逻辑与VSC的动态响应特性,同时可参考文中提到的优化算法与控制策略进行扩展研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值