筆試題2 實現把字串中的每個空格進行替換

2021-08-20 08:11:16 字數 780 閱讀 6298

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

做字串中空格的替換就要統計出字串中空格出現的次數,因此遍歷字串,統計字串的長度以及空格出現的次數。

然後計算下替換之後新字串的長度。在給字元陣列預分配記憶體大小時,一定要分配的大小比替換之後新字串的長度要長。

然後在原字串基礎上去修改字串,為減少時間複雜度,從後到前去修改字串。

可以採用兩個指標,乙個指標指向原始字串的末尾,乙個指標指向新字串的末尾。

然後進行拷貝,直到遇到空格,則在新字串中插入三個字元『0』、『2』、『%』。

這樣所有的字元只複製一次,時間複雜度為o(n).

c++**如下:

#include using namespace std;

class solution

} int newlength = orglength + numofblank * 2; //替換之後,由原來的乙個空格字元,變成了三個字元。增加了2倍的空格字元長度

if (newlength + 1 > length)

return;

char* pstr1 = str + orglength;

char* pstr2 = str + newlength;

while (pstr1程式測試結果:

筆試題目「翻轉字串」的實現

寫乙個函式,將字串翻轉,翻轉方式如下 i am a student 反轉成 student a am i 不借助任何庫函式。我自己寫了個實現 將字串翻轉 翻轉方式如下 i am a student 反轉成 student a am i 方法 先反轉整個字串,然後再反轉字串。譬如先將 i am a s...

筆試題目「翻轉字串」的實現

寫乙個函式,將字串翻轉,翻轉方式如下 i am a student 反轉成 student a am i 不借助任何庫函式。據說這題在筆試或者面試當中,出現的頻率非常高。剛好在書上也看到這題,又在看到這題出現了 發職位經典面試題 作者也提示了,方法是先反轉整個字串,然後再反轉字串。譬如先將 i am...

有關字串的筆試題

小總結 1.轉換字串格式為原來字串裡的字元 該字元連續出現的個數 1233422222轉換為1121324125 思路 兩個vector來存放,乙個存放字元,乙個存放次數 void printchte string str mytime.push back time mychar.push back...