字符串替換空格

題目描述

請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),將一個(gè)字符串中的空格替換成“%20”。例如,當(dāng)字符串為We Are Happy.則經(jīng)過(guò)替換之后的字符串為We%20Are%20Happy。

注意

原來(lái)一個(gè)空格字符,替換之后,變成‘%’,‘2’,‘0’三個(gè)字符,字符串長(zhǎng)度會(huì)變長(zhǎng)。如果是在原來(lái)的字符串上做替換,要保證原來(lái)的字符串有足夠的空余內(nèi)存。

從前向后,時(shí)間復(fù)雜度為O(n^2)

從頭到尾掃描字符串,每次碰到空格字符時(shí)做替換,空格后所有的字符向后移2個(gè)字節(jié)。

從后向前,時(shí)間復(fù)雜度O(n)

先遍歷一遍字符串,求出所有空格的總數(shù)和字符串實(shí)際長(zhǎng)度。計(jì)算出替換之后的字符串的總長(zhǎng)度,從字符串最后開(kāi)始復(fù)制和替換,包括‘\0’。

class Solution {
public:
    void replaceSpace(char *str, int length) {
        if (str == NULL || length <= 0)
            return;

        int blanksize = 0;  //空格數(shù)
        int len=0;          //數(shù)組實(shí)際長(zhǎng)度
        for (int i = 0; str[i]!='\0'; i++)//注意此處判斷條件不是i<length
        {
            len++;
            if (str[i] == ' ')
                blanksize++;
        }

        int newLen = len + blanksize * 2;
        if (newLen > length)
            return;
        int j = newLen;
        for (int i = len; i >= 0; i--)
        {
            if (str[i] != ' ')
                str[j--] = str[i];
            else
            {
                str[j--] = '0';
                str[j--] = '2';
                str[j--] = '%';
            }
        }
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,667評(píng)論 0 4
  • 在挖掘分析的過(guò)程當(dāng)中對(duì)字符串的處理是極為重要的,且出現(xiàn)也較為頻繁,R語(yǔ)言作為當(dāng)前最為流行的開(kāi)源數(shù)據(jù)分析和可視化平臺(tái)...
    果果哥哥BBQ閱讀 6,125評(píng)論 0 8
  • 本節(jié)主要講如何打開(kāi)對(duì)方的心鎖和運(yùn)用該方法該注意的問(wèn)題。了解了對(duì)方的興趣愛(ài)好,喜怒哀樂(lè)之后,投其所好,走進(jìn)對(duì)方的內(nèi)心...
    我在霾中等風(fēng)閱讀 367評(píng)論 0 0
  • 初讀這本書(shū)時(shí),正處于暑期開(kāi)始的躁動(dòng)期,村上春樹(shù)的充滿平靜思考的文字也沒(méi)能把聒噪的心給降下來(lái)。暑期伊始忙于瀏覽各種找...
    destiny書(shū)閱讀 376評(píng)論 0 1
  • 大年初一是一年的始端,對(duì)中國(guó)人而言他有不一樣的意義。一個(gè)新的緣起,一個(gè)不同的開(kāi)端。在過(guò)去大家會(huì)在這一天守歲,守歲顧...
    慧文閱讀 516評(píng)論 0 0

友情鏈接更多精彩內(nèi)容