劍指Offer05 替換字串中的空格

2021-08-27 14:23:20 字數 775 閱讀 7802

(劍指offer上面的分析)看到這個題目,我們首先應該想到的是原來乙個空格字元,替換之後變成」%』、2』和』0這3個字元,因此字串會變長。如果是在原來的字串.上做替換,那麼就有可能覆蓋修改在該字串後面的記憶體。如果是建立新的字串並在新的字串_上做替換,那麼我們可以自已分配足夠多的記憶體。由於有兩種不同的解決方案,我們應該向面試官問清楚,讓他明確告訴我們他的需求。假設面試官讓我們在原來的字串上做替換,並且保證輸入的字串後面有足夠多的空餘記憶體。

先遍歷字串,填充字元。因為乙個空格要替換成三個字元(%20),因此當遍歷到乙個空格時,需要在尾部填充兩個任意字元。

令 p1 指向字串原來的末尾位置,p2 指向字串現在的末尾位置。p1 和 p2從後向前遍歷,當 p1 遍歷到乙個空格時,就需要令 p2 指向的位置依次填充 02%(注意是逆序的),否則就填充上 p1 指向字元的值。

public

class

replacespace

}// 定義兩個「指標」 p1指向字串原來的末尾位置 p2 指向現在的末尾位置 p1和p2 從後往前遍歷

int p1 = oldlen - 1;

int p2 = str.length() - 1;

while (p1 >= 0 && p2 > p1) else

}return str.tostring();

}// 測試

public

static

void

main(string args)

}

劍指offer 05 替換字串中的空格

思路 從後往前複製,陣列長度會增加,或使用stringbuilder stringbuffer 類 解法一 使用stringbuffer param str 輸入字串 return 輸出結果 public static string replaceblank1 string str stringbu...

劍指 Offer 05 替換空格

劍指 offer 05.替換空格 請實現乙個函式,把字串 s 中的每個空格替換成 20 示例 1 方法一 遍歷新增 由於每次替換從 1 個字元變成 3 個字元,使用字元陣列可方便地進行替換。建立字元陣列地長度為 s 的長度的 3 倍,這樣可保證字元陣列可以容納所有替換後的字元。class solut...

劍指 Offer 05 替換空格

請實現乙個函式,把字串 s 中的每個空格替換成 20 示例 1 限制 0 s 的長度 10000 我的解答 class solution 這道題還是很簡單的,使用replace或者遍歷整個字串,每到空格就新增 20即可。不過在做完後發現,replace和replaceall方法具有差別,replac...