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;}