剑指offer-替换空格(c++)

剑指offer-替换空格(c++)

1.题目描述

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

2.解题思路

  1. 建立一个栈,从字符数组的最后一个字符开始检测,如果字符是空格,依次入栈0,1,%;否则入栈字符数组的字符。
  2. 循环遍历栈并赋值给字符数组

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

猜你喜欢

转载自www.cnblogs.com/Elijah-Z/p/12896700.html