replaceBlank

来源:互联网 发布:机器人技术基础知乎 编辑:程序博客网 时间:2024/06/06 18:50

repalceBlank

剑指offer题目:将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
[牛客url]https://www.nowcoder.com/practice/4060ac7e3e404ad1a894ef3e17650423?tpId=13&tqId=11155&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

思路:先计算blank 的数量,然后从后往前插入。

#include <stdio.h>#include <iostream>#include <string>using namespace std;class Solution {public:    void replaceSpace(char *str,int length) {        if(length<= 0 || str == NULL ){            return;        }        int numOfBlank = 0;        int newLength = 0;        for (int i = length -1; i >= 0; i-- ){            if (str[i]== ' ' ){                numOfBlank ++;            }        }        newLength = length + 2* numOfBlank;        int indexNew = newLength;        int indexOld = length;        while(indexOld >= 0 && indexNew > indexOld){            if (str[indexOld] == ' '){                str[indexNew--] = '0';                str[indexNew--] = '2';                str[indexNew--] = '%';            } else {                str[indexNew--] = str [indexOld];            }            indexOld -- ;        }      }};int main (){    Solution Solu;    char s[] = "hello world";    int len = sizeof(s)/sizeof(s[0]);    cout<< len << endl;    Solu.replaceSpace(s,len);    cout<< s << endl;    return 0;}
原创粉丝点击