面試題2 替換空格

2021-06-29 05:03:07 字數 774 閱讀 6846

分析:先遍歷一遍統計出空格數,乙個空格替換成三個字元,長度增加了2,n個空格,長度增加2n。則

替換後的字串長度 = 原字串長度 + 2n

設定兩個指標,乙個指向原字串末尾,乙個指向新字串末尾。第二遍遍歷,從後往前遍歷。將原字串最後乙個字元複製到新字串最後乙個字元的位置,兩個指標同時前移。當原字串遇到空格,在新字串對應位置插入」%20」三個字元,接著原字串指標前移1位,新字串指標前移3位。如此操作,直到原字串第乙個字元也複製完結束。

**(c++):

#include

using

namespace

std;

#define max_len 100

/* 函式功能:替換字串中的空格

*/void replaceblank(char data)

i++;

}//-----------這裡是關鍵------------

// 原來字串長度

old_len=i+1;

// 計算新字串長度

new_len=old_len+2*blank_num;

// 重置i,j

i=old_len-1;

j=new_len - 1;

//-----------這裡是關鍵------------

// 再遍歷一遍,替換空格

while(i>=0)

else

i--;

}}int main()

面試題 替換空格

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

面試題 替換空格

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

面試題 替換空格

如果面試的時候,你只寫出了這種演算法,那你大概率就涼了 void replaceblank string s else s ans cout ans 我們先遍歷一遍字元,統計裡邊的空格的數量,由此可以計算出替換之後字元的長度 我們準備兩個指標,然後乙個指向替換之後的末尾位置,乙個指向為替換末尾位置 ...