題目:請實現乙個函式,把字串中的每個空格替換成「
%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和...