面試題 替換空格

2021-08-14 23:53:12 字數 910 閱讀 8175

基本思路:先遍歷一遍字串統計字串中空格的個數並計算出替換之後的字串的總長度,每替換乙個空格,長度增加2,因此替換後字串的長度對於原來的長度加上空格個數的2倍。如果從頭到尾掃瞄字串,遇到空格就做替換,必須每次都把空格後面所有的字元都向後移動兩個位元組,這樣處理的時間複雜度為o(n²),效率比較低。我們還有更好的方法, 從字串的後面開始複製(沒遇到空格)和替換(遇到空格),這樣所有的字元都只複製(移動)一次,時間複雜度為o(n)。提高了效率

1.陣列方法

#include using namespace std;

void replaceblank(char str, int length)

int newlength = oldlength + num * 2;

if (newlength > length)

return;

int tmp1 = oldlength;

int tmp2 = newlength;

while(tmp1 >= 0 && tmp2 > tmp1)

else

tmp1--;

}}int main()

2.指標方法

#include #define max 100

void replaceblank(char string)

p++;

count++;

} //判斷是否越界

if((count + counts *2) >= max)

return;

//需要兩個遍歷指標

char *p1=p;

char *p2=p;

p2=p+2*counts;

*p2='\0';

for( i=0;i

面試題 替換空格

一 2 在網路程式設計中,如果url引數中含有特殊字元,如空格 等,則可能導致伺服器端無法獲取正確的引數值。我們可以將這些特殊符號替換成伺服器可以識別的字元。可以在 後面跟上ascii碼的兩位十六進製制表示。空格的ascii碼為32.3 思路 1 把第乙個指標指向字串的末尾,把第二個指標指向替換後字...

面試題 替換空格

如果面試的時候,你只寫出了這種演算法,那你大概率就涼了 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 ...