博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指Offer_5_替换空格
阅读量:6947 次
发布时间:2019-06-27

本文共 950 字,大约阅读时间需要 3 分钟。

题目描述

请实现一个函数,将一个字符串中的空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为 We%20Are%20Happy。
   在网络编程中,如果一个URL参数含有特殊字符,如空格,#等,可能导致服务端无法获得准确的参数值。我们需要将这些特殊字符转换成服务端可以识别的字符,转换的规则是在'%'后面跟上ASCII码的两位十六进制表示。比如空格的ASCII码是32,也就是十六进制的0x20,因此空格被替换为了%20 。再比如#的ASCII码为35,即0x23,因此他在URL中应替换为%23 。(URL相关的可以参考我Java爬虫的那几篇) 
   
   将一个空格替换为三个字符 。
   如果按顺序遍历字符串,在保证字符串有足够的空间下,需要对后边的字符串进行大量的移动。 
   较为简单的方法是,遍历一边字符串,记录空格数,假如为字符串原长度为10,空格数为3 , 那么替换后字符串的长度应该为 10+2*3 。
   然后倒序操作字符串,遇到非空格的字符串,则填到扩展位,然后扩展位减一,遇到空格,则在扩展位位置填入'0' ,'2' ,'%' ,每次扩展位各加一 。
 
1 #include
2 3 using namespace std ; 4 5 int main() 6 { 7 char c[] = "We are Happy" ; 8 int len = 13 ; 9 int num = 0 ; // 空格数10 for(int i=0;i
=0;i--){19 if(c[i]!=0x20){20 a[newLen--] = c[i] ;21 }else {22 a[newLen--] = '0';23 a[newLen--] = '2';24 a[newLen--] = '%';25 }26 }27 cout << a <

 

 
 
 
     

转载地址:http://qeenl.baihongyu.com/

你可能感兴趣的文章
单例模式
查看>>
Exchange 2010 禁用通讯组后,如何再启用。
查看>>
从hiredis使用出core谈谈redis多线程的使用
查看>>
leetcode解题报告:198 House Robber
查看>>
Spring @Value 无法获取到properties文件中的值
查看>>
Win8 采用受信任启动保障用户安全
查看>>
linux 安装 jdk bin
查看>>
数据库原理 西安电子科技大学(第三版) 付婷婷 第三章 课后习题答案
查看>>
一个透明色的左三角
查看>>
架构图
查看>>
查看计算机信息
查看>>
编程基础(哑元、内联)
查看>>
hadoop2.8的namenode节点用jps发现没有jobtracker 和tasktracke
查看>>
history 显示时间
查看>>
视频帧率对人眼主观感受的影响 2
查看>>
postfix+dovecot+foxmail虚拟用户配置
查看>>
【中国互联网不眠夜】Struts2漏洞百出,OneRASP鼎力相助
查看>>
C语言之main函数传参
查看>>
shell学习之变量和引号
查看>>
网页布局--瀑布流
查看>>