面试题:替换空格

来源:互联网 发布:如何消除身体疲劳知乎 编辑:程序博客网 时间:2024/06/04 22:35

题目:替换字符串中的空格为$$$。要求时间复杂度为O(N)

例如:将”talk is cheap show me the code”替换。
这里写图片描述
基本思想:
栗子:we are family
这里写图片描述

参考代码:

void ReplaceBlank(char string[], int length){    //length为字符串的总容量    if (string == NULL || length <= 0)        return;    //字符串实际长度    int actuallen = 0;    //空格个数    int blanknum = 0;    int i = 0;    while (string[i]!='\0')    {        if (string[i] == ' ')            blanknum++;        actuallen++;        i++;    }    //替换后的总长度    int newlen = actuallen + blanknum * 2;    if (newlen > length)        return;    int actualidx = actuallen;    int newidx = newlen;    while (actualidx>=0 && newidx>actualidx)    {        if (string[actualidx] == ' ')        {            string[newidx--] = '$';            string[newidx--] = '$';            string[newidx--] = '$';        }        else        {            string[newidx--] = string[actualidx];        }        actualidx --;    }    int j = 0;    while (j<newlen)    {        cout << string[j] << " ";        j++;    }}