面試題5 替換空格

2022-06-16 15:57:12 字數 562 閱讀 4584

1.考慮特殊輸入,空串、單空格、多空格,測試用例「」,「 」,「  」;

2.考慮輸入字串無空格,測試用例「string」;

3.考慮正例輸入,字串前、中、後存在空格(單多空格),測試用例「 hello  world 」。

1     str = str.replace(" ","%20");

對整個字串進行從左至右遍歷,遇到空格進行替換(若為字元陣列,需要向後移位,會使得複雜度為o(n^2))。

雙指標的演算法思想:設定兩個指示位(指標),指向字串的末尾,移動乙個指標至空格所在位置,此時兩個指標之間的子串不存在空格,是最終字串的組成部分,通過在此段字串之前新增字串「%20」,對整個字串進行此操作,所得結果即為要求字串。

1

public

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 長度超過總長...