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