剑指offer-替换空格(c++)
1.题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
2.解题思路
- 建立一个栈,从字符数组的最后一个字符开始检测,如果字符是空格,依次入栈0,1,%;否则入栈字符数组的字符。
- 循环遍历栈并赋值给字符数组
3.代码
//
// Created by Elijah on 2020/5/15.
//
#include <iostream>
#include <stack>
#include <stdio.h>
using namespace std;
/**
* 请实现一个函数,将一个字符串中的每个空格替换成“%20”。
* 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
*/
class Solution {
public:
void replaceSpace(char *str, int length) {
if (str == NULL || length == 0)
return;
stack<char> ret;
for (int i = length - 1; i > -1; i--) {
if (str[i] == ' ') {
ret.push('0');
ret.push('2');
ret.push('%');
} else {
ret.push(str[i]);
}
}
int pos = 0;
while (!ret.empty()) {
str[pos] = ret.top();
ret.pop();
pos += 1;
}
}
};