4 代替字元陣列中的空格

2021-07-04 02:33:15 字數 778 閱讀 5329

題目描述:

解析:

直觀的想法是,新建乙個陣列,逐個複製,遇到空格時,寫入%20,但這需要占用額外空間。

不占用額外空間的演算法是原位替換。如果我們順序的遍歷字串,當遇到空格時,用%20替換空格,這將覆蓋掉空格後面的字元 || 如果覆蓋前,後移剩餘字串,那麼移動的時間複雜度為o(n^2).

因此,採用從後向前複製的方式。

注意:以下的新舊字串是同乙個字串,只是乙個是替換前,乙個指替換後

首先統計空格的個數,計算出新字串的長度,然後用2個指標,1個指向新字串尾,1個指向舊字串尾,兩指標同步向前,遇到空格時,新索引指標按位址寫入%20,當新舊指標相等時說明已經替換完全部空格。

從後向前的處理方式,不會覆蓋原有的資料,也不會產生多餘的資料移動。

#include 

using namespace std;

void replaceblank(char

str, int len)

int oldindex = oldlen; //之所以不-1,是因為字串陣列尾部的'\0'

int newindex = oldlen + 2*blank ;

if (newindex+1 > len) // 原有陣列空間不足

return;

while (newindex != oldindex) else

oldindex--;

}}int main()

替字串中的換空格 C 實現

時間複雜度為o n 2 的解法 思路 從頭到尾掃瞄字串,每一次碰到空格字元的時候做替換,即把1個字元替換成3個字元 我們必須要把空格後面所有的字元向後移動兩個位元組,否則就有兩個字元被覆蓋了。基於如上思路,實現如下 void solution replacespace1 char str,int l...

程式設計師面試金典第一章 陣列與字串(4) 空格替換

1.1 題目描述 請編寫乙個方法,將字串中的空格全部替換為 20 假定該字串有足夠的空間存放新增的字元,並且知道字串的真實長度 小於等於1000 同時保證字串由大小寫的英文本母組成。給定乙個string inistring 為原始的串,以及串的長度 int len,返回替換後的string。測試樣例...

4 替換字串中的所有空格

title 一 將字串中的所有空格用 20替換 二 擴充套件 將兩個有序的陣列連線成乙個有序陣列,第乙個陣列足夠大 thought 1 原串的記憶體足夠大,在原串中實現替換 2 可開闢新空間,將原串複製到新串的過程中把空格替換 realize 一 實現第乙個想法 1 統計原串s中 長度len 空格的...