1. 程式人生 > >劍指offer--京東演算法面試(將字串中的隨機個數的空格數替換為一個空格)

劍指offer--京東演算法面試(將字串中的隨機個數的空格數替換為一個空格)

#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;

/**
\brief: 將I       have    a family! 替換為 I have a family!.
\input: src:源字串
\       strLen:源字串的長度
\output:desc:目標字串
*/

void ReserveOneEmpty(char *desc, char *src, int srcLen)
{
    char *s_desc = desc;
    char *s_src = src;

    if (desc == nullptr || src == nullptr || srcLen <= 0)
    {
        return;
    }
    // 處理開始為空格的字串情況
    while (*s_src == ' ')
    {
        s_src ++;
    }

    while (*s_src != '\0')
    {
        if (*s_src != ' ')
        {
            *(s_desc ++) = *(s_src ++);
        }
        else
        {
            while (*s_src == ' ')
            {
                s_src ++;
            }
            *(s_desc ++) = ' ';
            *(s_desc ++) = *(s_src ++);
        }
    }
    *s_desc = '\0';
}

int main()
{
    char *src = "  I       have    a  family!";
    int srcLen = strlen(src);
    char *desc = (char *)malloc(sizeof(char) * srcLen + 1);
    ReserveOneEmpty(desc, src, srcLen);
    cout << src << endl;
    cout << desc << endl;
    return 0;
}