剑指offer替换空格


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

class Solution {

public:

    string replaceSpace(string str) {

        stack<int> Mystack;

    int length=str.length();

    int blankCount=0;

    for(int i=0;i<length;i++)

    {

        if(str[i]==‘ ‘)

        {

            Mystack.push(i);

            blankCount++;

        }

    }

    int newLength=length+blankCount*2;

    string newstr(newLength,‘0‘);

 

    int blankIndex=0;

    int i=length-1;

    int j=newLength-1;

    while(!Mystack.empty())

    {

        blankIndex=Mystack.top();

        Mystack.pop();

        while(i>blankIndex)

        {

            newstr[j]=str[i];

            j--;

            i--;

        }

        newstr[j--]=‘0‘;

        newstr[j--]=‘2‘;

        newstr[j--]=(char)(37);

        i--;

    }

    while(i>=0)

    {

        newstr[j]=str[i];

        j--;

        i--;

    }

    return newstr;

    }

};

时间: 2024-10-09 02:05:11

剑指offer替换空格的相关文章

[剑指OFFER] 替换空格

题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 分析: 个人理解,应该是对空间复杂度有要求,如果没有要求,下面code就OK class Solution { public: string replaceSpace(string str) { string rtn; for(int i = 0; i < str.size(); i++) { if(str[i] == ' ') r

剑指offer——替换字符串

总结:先计算出总共有多少空格,count++:然后从后往前遍历,每遇到一个空格,count--: 替换空格 参与人数:2119时间限制:1秒空间限制:32768K 通过比例:20.23% 最佳记录:0 ms|8552K(来自  牛客游客) 题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 完整代码: public class StringreplaceSpace { public

【剑指offer】空格替换

Question 设计一种方法,将一个字符串中的所有空格替换成 %20 .你可以假设该字符串有足够的空间来加入新的字符,且你得到的是"真实的"字符长度. Solution 1 需要额外的一个数组: class Solution { public: /** * @param string: An array of Char * @param length: The true length of the string * @return: The true length of new st

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

题目: 实现一个函数,把字符串中的每个空格替换成"%20".加入输入"we are happy.",则输出"we%20are%20happy.". 时间复杂度为O(n^2) 基本思想:从前往后把字符串中的空格替换成%20. 假设字符串的长度为n,对每个空格字符,需要移动后面O(n)个字符,因此总的时间复杂度为O(n^2). 时间复杂度为O(n) 基本思想:先遍历找出空格总数,并计算出替换之后的字符串的总长度.然后从字符串的后面开始复制和替换. 所

剑指offer 替换字符串中的空格

void replaceSpace(char *str,int length) { if(str==NULL||length<=0) return; int originlen=0; int newlen=0; int space=0; while(str[originlen]!='\0') { if(str[originlen]==' ') space++; originlen++; } originlen++; newlen=originlen+2*space; if(originlen==

剑指Offer-2.替换空格(C++/Java)

题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 分析: 题意明确,就是将一个字符串中的每个空格替换成“%20”,可以新建一个空字符串,遍历原字符串,遇到空格就添加“%20”,否则就将字符添加进新串中. 不过这种方法需要额外的空间,我们可以在原字符串上进行操作. 如果从头开始遍历字符串,遇到空格将其替换成为“%20”,需要将后面的字符进行后移操作,时间复杂度很高. 所以我们可以先

剑指Offer02 替换空格

1 /************************************************************************* 2 > File Name: 02_Replace_Blank.c 3 > Author: Juntaran 4 > Mail: [email protected] 5 > Created Time: 2016年08月24日 星期三 01时28分33秒 6 *************************************

剑指Offer 目录

剑指Offer01 杨氏数组寻值 剑指Offer02 替换空格 剑指Offer03 逆序输出链表&链表逆序

【剑指offer】第四题 替换空格

/** * 剑指offer 第4题 替换空格 * 特点:1.先扫描串中的空格数,计算好替换后的长度 * 2.使用双指针,从后面开始向前替换,避免从前开始每次替换后就要移动后面的所有的数据 * 测试用例:特殊:有多个空格 * 错误:数组长度不够,字符串为空 * */ package javaTrain; public class Offer4 { public static void main(String[] args) { String a = "Hello I am Daisy Dong!&