1.考慮特殊輸入,空串、單空格、多空格,測試用例「」,「 」,「 」;
2.考慮輸入字串無空格,測試用例「string」;
3.考慮正例輸入,字串前、中、後存在空格(單多空格),測試用例「 hello world 」。
1 str = str.replace(" ","%20");
對整個字串進行從左至右遍歷,遇到空格進行替換(若為字元陣列,需要向後移位,會使得複雜度為o(n^2))。
雙指標的演算法思想:設定兩個指示位(指標),指向字串的末尾,移動乙個指標至空格所在位置,此時兩個指標之間的子串不存在空格,是最終字串的組成部分,通過在此段字串之前新增字串「%20」,對整個字串進行此操作,所得結果即為要求字串。
1public
static
string replacespace(string str) else15}
16if (p2 >= 0)
20return
re;21 }
複雜度分析:時間複雜度o(n),空間複雜度o(1)。
面試題5 替換空格
面試題5 替換空格 解題思路 遍歷字串,求出公有多少個字元,和有多少個空格 因為要將空格替換成 20 意味著乙個空格要增加兩個長度。所以新的字元長度為 原有長度 空格長度 2 這是乙個指標p1,放在久長度尾部,p2,放在新長度尾部。將p1指向的字元移動到p2指向的位置,若字元為空格,則替換成 20 ...
面試題5 替換空格
方法 一 二 於牛客網 方法 三 四 於leecode 方法一 字串陣列class solution for int j length 1 j 0 j 方法二 字串陣列轉換成string,使用string成員函式 先轉為string,然後處理完成後再轉為const char 指向字串陣列的指標 但不...
面試題5 替換空格
題目 請實現乙個函式,把字串 s 中的每個空格替換成 20 示例 思路1 把字串儲存到陣列中處理,稍微麻煩一點。1 void replacespace char str,int length newlength oldlength 2 count if newlength length 長度超過總長...