??途W(wǎng)劍指Offer——替換空格

題目描述
請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),將一個(gè)字符串中的空格替換成“%20”。例如,當(dāng)字符串為We Are Happy.則經(jīng)過替換之后的字符串為We%20Are%20Happy。
(輸入中l(wèi)ength為最大長(zhǎng)度)

解題思路:
首先計(jì)算str現(xiàn)有長(zhǎng)度和修改后的長(zhǎng)度,然后利用兩個(gè)指針,從后往前賦值。

class Solution {
public:
    void replaceSpace(char *str,int length) {
        if( str == NULL )
            return;
        int originalLen = 0; //原有長(zhǎng)度
        int blankNum = 0; //空格個(gè)數(shù)
        
        for( int i=0;str[i]!='\0';i++ )
        {
            originalLen++;
            if( str[i] == ' ' )
                blankNum++;
        }
        int len = originalLen + blankNum * 2; //修改后長(zhǎng)度
        if( len+1 > length ) //判斷不能超過最大長(zhǎng)度
            return;
        
        char *p1 = str + originalLen; //修改前str的末尾,指向'\0'
        char *p2 = str + len; //修改后str的末尾,指向'\0'
        while( p2 > p1 ) //從后往前賦值
        {
            if( *p1 == ' ' )
            {
                *p2 = '0';
                p2--;
                *p2 = '2';
                p2--;
                *p2 = '%';
                p2--;
            }
            else
            {
                *p2 = *p1;
                p2--;
            }
            p1--;
        }
        
        return;
    }
};
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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