劍指offer面試題 替換空格

2021-08-20 11:38:17 字數 2109 閱讀 9329

題目:請實現乙個函式,把字串中的每個空格替換成「

%20」。例如輸入「

」,則輸出「

」。解析:時間複雜度為o(n)的解法。

完整**及測試用例實現:

[cpp] 

view plain

copy

#include

using

namespace

std;  

#include 

//length 為字元陣列string的總容量

void

replaceblank(

char

string, 

intlength)  

//reallylength 為字串string的實際長度

intreallylength = 0, numberofblank = 0,i=0;  

while

(string[i]!=

'\0'

)    

++i;  

}  //newlength 為把空格替換成'%20'之後的長度

intnewlength = reallylength + numberofblank * 2;  

if(newlength > length)  

intindexofreally = reallylength;  

intindexofnew = newlength;  

while

(indexofreally >= 0 && indexofnew >indexofreally)  

else

--indexofreally;  

}  }  

// ********************測試**********************

void

test(

char

* testname, 

char

string, 

intlength, 

char

expected)  

replaceblank(string, length);  

if(expected == null && string == null)  

else

if(expected == null && string != null)  

else

if(strcmp(string, expected) == 0)  

else

}  void

test1()  

void

test2()  

void

test3()  

void

test4()  

void

test5()  

void

test6()  

void

test7()  

void

test8()  

void

test9()  

intmain()  

執行結果:

test1 begins: passed.

test2 begins: passed.

test3 begins: passed.

test4 begins: passed.

test5 begins: passed.

test6 begins: passed.

test7 begins: passed.

test8 begins: passed.

test9 begins: passed.

請按任意鍵繼續. . .

替換空格(劍指offer面試題4)

分析 從頭到尾掃瞄字串,遇到空格就替換,導致後面的字元都要向後移,意味著總時間複雜度為o n 2 更好的辦法,從字串後面遍歷替換。先遍歷所有的空格,每多乙個空格,字串長度加2個,也就是說最後替換後的字串長度為原長度 2 空格數,設定兩個指標,指向原始字串末尾和新字串末尾,依次向前遍歷,原始字串指標遇...

劍指offer 面試題 (替換空格) 1

題目分析 首先,我們應該想到的是原來是乙個空格字元,替換之後變為三個字元 2 0 如果我們直接在原來的字串上進行替換,就有可能覆蓋掉原本的內容 如果是建立新的字串並 新的字串上做替換,那麼我們可以自己分配好足夠的記憶體,所以我們應該向面試官問清楚如果面 試官告訴你在原本的字串上做修改,並且記憶體足夠...

劍指Offer 面試題四 替換空格

c c 把常量字串放到單獨的乙個記憶體區域。當幾個 指標賦值給相同的常量字串時,它們實際上會指向相同的記憶體位址。但是用常量記憶體初始化陣列,情況卻不相同。如下 includeusing namespace std int main 執行結果 same no same 請按任意鍵繼續.分析 ch1和...