[剑指offer]替换空格

来源:互联网 发布:centos yum nmap 编辑:程序博客网 时间:2024/06/04 19:41

题目描述

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

分析:把空格替换为“%20”,如果不增加长度只是替换成另一个字符是很方便的,这里增加了长度,那么可以先计算出替换完后字符串的总长度,直接定位到最后的位置,另一个指针指向原字符串最后一个位置,从后往前扫描,遇到空格则写入%20.

注意传入的那个length不是字符串的长度,是字符串能够使用的最大长度。

C++:

class Solution {public:void replaceSpace(char *str,int length) {if(str==nullptr||length<=0){            return;        }        int blank=0;        int i=0;        int orilength=0;        while(str[i]!='\0'){            orilength++;            if(str[i]==' '){                blank++;            }            i++;        }        int newlength=orilength+blank*2;        if(newlength>length){            return;        }        int oriindex=orilength;        int newindex=newlength;        while(oriindex>=0&&newindex>oriindex){            if(str[oriindex]==' '){                str[newindex--]='0';                str[newindex--]='2';                str[newindex--]='%';            }            else{                str[newindex--]=str[oriindex];            }            oriindex--;        }}};

python:

# -*- coding:utf-8 -*-class Solution:    # s 源字符串    def replaceSpace(self, s):        # write code here        return s.replace(' ','%20')


0 0
原创粉丝点击