关闭

剑指offer:字符串(替换空格)

267人阅读 评论(0) 收藏 举报
分类:

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

//length为规定字符串输出的最大长度,固定为一个常数
class Solution {
public:
	void replaceSpace(char *str,int length) {
    
	//首先应该想到的是原来的一个空格字符,替换之后变成‘%’‘2’‘0’这三个字符,因此字符串会变长
	//如果是在原来的字符串上做替换,那么就有可能覆盖修改在该字符串后面的内存;故需要保证输入字符串后面有足够多的空余内存
	//如果是在创建新的字符串并在新的字符串上做替换,那么我们就可以分配足够多的内存。
	if(*str==NULL&&length<=0) 
		return;
	int originalLength=0;//先计算字符串的原始长度
	int newLength=0;//替换后的字符串长度
	int numberOfBlank=0;//统计总共有几个空格
	while(*(str+originalLength)!='\0'){        
		
		if(*(str+originalLength)==' ')
			numberOfBlank++;
        originalLength++;
	} 
	newLength=originalLength+numberOfBlank*2;
	if(newLength>length)
		return;
	int indexOfOriginal=originalLength;
	int indexOfNew=newLength;
	while(indexOfNew>0&&indexOfNew>indexOfOriginal)
	{
		if(*(str+indexOfOriginal)==' ')
		{			
			*(str+indexOfNew)='0';
			indexOfNew--;			
			*(str+indexOfNew)='2';
			indexOfNew--;			
			*(str+indexOfNew)='%';
			indexOfNew--;
		}
		else 
		{			
			*(str+indexOfNew)=*(str+indexOfOriginal);
			indexOfNew--;
		}
		--indexOfOriginal;
	}
}
};
《剑指offer》P47

0
0
查看评论

剑指offer面试题:替换空格(将字符串每个空格替换为%20)

题目:请实现一个函数,把字符串的每个空格替换成“%20”。例如:输入:“we are happy.”,则输出:“we%20are%20happy.” 这里考虑的是在原来的字符串上做替换这一种情况: 若我们用直接做法从头到尾扫描字符串,每碰到一个空格就做替换,其空格后面的字符都必须后移两个字节,如...
  • L_XRUI
  • L_XRUI
  • 2016-06-15 21:41
  • 974

剑指offer 算法2 替换空格(python)

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
  • yehan36
  • yehan36
  • 2017-08-29 19:34
  • 151

【剑指offer】-替换空格

题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解析:如果从前往后替换字符串中的空格,则每次替换,都要把空格后的字符向后挪动相应的位置。这样,时间复杂度会很高。在此,我们可以换个思路,先...
  • Kevin_zhai
  • Kevin_zhai
  • 2015-11-02 15:04
  • 1078

剑指Offer面试题4(Java版),替换空格

题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy",则输出”We%20are%20happy". 原因:在网络编程中,如果URL参数中含有特殊字符,如:空格、“#”等,可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成...
  • jsqfengbao
  • jsqfengbao
  • 2015-07-24 17:58
  • 1954

剑指Offer,面试题4,替换空格,Java写法

题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路就是如果从左到右去插入的话,时间复杂度为O(n2),先确定空格的个数,然后确定替换后的String长度,从右到左插入的话时间复杂度为O(...
  • u012162920
  • u012162920
  • 2016-08-15 17:21
  • 250

剑指offer:替换空格(java)

面试题:替换空格(假设在原来的字符串上替换,并且保证输入的字符串后面有足够多的内存空间) 题目:请实现一个函数,把字符串中的每个空格替换成“20%”。例如输入“hellow new world!”,则输出“hellow02%new02%world!”。 原因:在网络编程中,如果URL参数中...
  • abc7845129630
  • abc7845129630
  • 2016-09-29 10:06
  • 252

剑指offer(C++)——替换空格

题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路:简单暴力解法,从头到尾遍历字符串,碰到空格,首先将后面的所有字符串往后移动2个字符,才能空出3个字符位子插入字符“%...
  • YF_Li123
  • YF_Li123
  • 2017-04-21 17:08
  • 537

剑指offer算法 java实现 替换字符串空格

剑指offer算法 java实现
  • believejava
  • believejava
  • 2014-08-19 15:24
  • 7392

剑指offer之字符串替换空格

题目: 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 实现代码: class Solution: # s 源字符串 def replaceSpace(self, s...
  • m0_37744293
  • m0_37744293
  • 2018-01-21 19:47
  • 25

剑指offer——字符串替换空格

(1)先遍历一次字符串,统计出字符串中空格的总数,并可以由此计算出替换之后字符串总长度。每替换一个空格,长度增加2,因此替换以后字符串的长度等于原来的长度加上2乘以空格数目。(2)然后从后往前开始复制替换。首先准备两个指针,p1和p2,p1指向原始字符串的末尾,p2指向那个替换后字符串的末尾,接下来...
  • qq_36221862
  • qq_36221862
  • 2017-03-29 22:31
  • 167
    个人资料
    • 访问:68052次
    • 积分:1106
    • 等级:
    • 排名:千里之外
    • 原创:41篇
    • 转载:22篇
    • 译文:1篇
    • 评论:17条
    最新评论