一、
2、在網路程式設計中,如果url引數中含有特殊字元,如空格、『#』等,則可能導致伺服器端無法獲取正確的引數值。我們可以將這些特殊符號替換成伺服器可以識別的字元。可以在『%』後面跟上ascii碼的兩位十六進製制表示。空格的ascii碼為32.
3、思路:
(1)把第乙個指標指向字串的末尾,把第二個指標指向替換後字串的末尾
(2)依次複製字串的內容,直至第乙個指標碰到第乙個空格
(3)把第乙個空格替換成「%20」,把第乙個指標向前移動1格,把第二個指標向前移動3格
(4)依次向前複製字串中的字元,直至碰到空格
(5)替換字串中的倒數第二個空格,把第乙個指標向前移動1格,把第二個指標向前移動3格
4、程式實現:
# include# include# includevoid isreplacespace(char *arr, int len)
//替換後,新串的長度
newarr = oriarrcount + 2 * spacecount;
if (newarr > len)
return;
int indexoriarrcount = oriarrcount;
int indexnewarr = newarr;
while (indexoriarrcount > 0 && indexnewarr > indexoriarrcount)
else
arr[indexnewarr--] = arr[indexoriarrcount];
--indexoriarrcount; }}
int main()
測試結果:
產生這種錯誤的原因是:
面試題 替換空格
基本思路 先遍歷一遍字串統計字串中空格的個數並計算出替換之後的字串的總長度,每替換乙個空格,長度增加2,因此替換後字串的長度對於原來的長度加上空格個數的2倍。如果從頭到尾掃瞄字串,遇到空格就做替換,必須每次都把空格後面所有的字元都向後移動兩個位元組,這樣處理的時間複雜度為o n 效率比較低。我們還有...
面試題 替換空格
如果面試的時候,你只寫出了這種演算法,那你大概率就涼了 void replaceblank string s else s ans cout ans 我們先遍歷一遍字元,統計裡邊的空格的數量,由此可以計算出替換之後字元的長度 我們準備兩個指標,然後乙個指向替換之後的末尾位置,乙個指向為替換末尾位置 ...
面試題4 替換空格
面試題4 實現乙個函式,把字串中的空格替換成 20 從前向後移動時,假如字串的長度為n。對於每個空格字元,需要移動後面o n 個字元,對含有o n 個空格字元的字串而言總的時間效率是o n n 從後向前移動時,所有的字元只需要複製一次,時間效率為o n void replaceblank char ...