剑指offer之替换空格
2017-07-30 23:01
218 查看
题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路: 如果从头往后替换则空格后边的字符串需要集体后移,会大量消耗时间;因此,采用从后向前替换,则需要先求出新字符串的长度,只要求出空格个数则能求出新字符串长度。因此,先求空格个数,再求新字符串长度,然后从后向前替换。
代码:
class Solution {
public:
void replaceSpace(char *str,int length) {
//判断str是否为空
if(str==NULL || length<=0)
return;
//首先计算空字符的个数
int blankNum=0;
int len=0;//除了空格字符长度
for(int i=0;str[i]!='\0';i++){
len++;
if(str[i]==' ')
blankNum++;
}
//新字符串
int newLength=len+blankNum*2;
if(newLength<=len) //无空格则不更新
return;
for(int i=len,j=newLength;i>=0;i--)
{
if(str[i]!=' ')
str[j--]=str[i];
else{
str[j--]='0';
str[j--]='2';
str[j--]='%';
}
}
}
};
思路: 如果从头往后替换则空格后边的字符串需要集体后移,会大量消耗时间;因此,采用从后向前替换,则需要先求出新字符串的长度,只要求出空格个数则能求出新字符串长度。因此,先求空格个数,再求新字符串长度,然后从后向前替换。
代码:
class Solution {
public:
void replaceSpace(char *str,int length) {
//判断str是否为空
if(str==NULL || length<=0)
return;
//首先计算空字符的个数
int blankNum=0;
int len=0;//除了空格字符长度
for(int i=0;str[i]!='\0';i++){
len++;
if(str[i]==' ')
blankNum++;
}
//新字符串
int newLength=len+blankNum*2;
if(newLength<=len) //无空格则不更新
return;
for(int i=len,j=newLength;i>=0;i--)
{
if(str[i]!=' ')
str[j--]=str[i];
else{
str[j--]='0';
str[j--]='2';
str[j--]='%';
}
}
}
};
相关文章推荐
- 剑指offer——替换空格的两种方法(Java)
- 《剑指Offer》读书笔记02:替换空格
- 剑指offer 面试题4 替换空格
- 《剑指Offer》学习笔记--面试题4:替换空格
- 剑指offer,面试题四替换空格
- 【剑指offer系列】 替换空格___4
- 剑指Offer 面试题4 替换空格
- 《剑指offer》刷题笔记(字符串):替换空格
- 剑指offer面试题——替换空格
- 剑指offer第二题替换空格
- 剑指offer-替换空格
- 《剑指offer》面试题4(替换空格)
- 剑指offer(四)之替换空格
- 剑指Offer---替换空格
- 面试题04_替换空格_剑指Offer系列
- 剑指offer面试题 替换空格
- 剑指Offer:面试题4 替换空格
- 剑指offer——替换空格&合并数组
- 字符串(替换空格-剑指offer!!!)
- 剑指offer——替换空格