(劍指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...