劍指offer 替換字串

2021-07-27 15:39:31 字數 875 閱讀 7295

//思路:如果直接替換,就有可能覆蓋修改在字串後面的記憶體。如果建立新的字串並在新的字串上做替換,我們就可以分配足夠多的記憶體。

//對於任何乙個函式,我們要做哪些基本的檢測

//1.傳入的引數有效性

//2.函式體邊界的判斷

//3.返回值正確返回

void replaceblank(char

str, int length)

//originallength為字串原始長度

int originallength = 0;

int numberofblank = 0;

int i = 0;

while (str[i] != '\0')

++i;

++originallength;

}//newlength 為把空格替換為%20後字串長度

int newlength = originallength + 2 * numberofblank;

if (length < newlength)

//從後往前拷,減少了挪動字元次數,因為後面都是放置好的元素

//需要兩個指標,分別指向兩個位置,若兩個位置值相等,則拷貝結束

int indexoforiginal = originallength;//該指標指向的元素內容為'\0',因為字串中字元的個數(不包含'\0')指向的'\0'

int indexofnew = newlength;

//開始替換

while (indexoforiginal < indexofnew&&indexoforiginal >= 0)

else

--indexoforiginal;

}}

劍指Offer 替換字串

我是鏈結 2.題目描述 將乙個空格字元 替換為三個字元 20 需要三個字元的空間,則在第乙個空格後的字元需要後挪 2 1格,第二個空格後的字元需要後挪2 2格,第三個空格後的字元需要後挪3 2格 依此類 推。4.思路 遍歷字串記錄其中的空格個數,最後再根據空格的順序後挪該空格後的字串,同時替換空格 ...

劍指offer 字串替換空格

見到這個題目,我們很容易想到 申請一塊新空間,儲存變化後的字串,顯然不是我們想要的結果 由此,我們可以想到如下方法 1 先遍歷一次字串,統計出字串中空格的總數,並可以由此計算出替換之後字串總長度。每替換乙個空格,長度增加2,因此替換以後字串的長度等於原來的長度加上2乘以空格數目。2 然後從後往前開始...

劍指offer 字串替換問題

題目一 函式將字串中的字元 號移到字串的前部分,前面的非 字元後移,但不能改變非字元的先後順序,函式返回串中非 字元的數量。要求盡可能的占用少的時間和輔助空間 例如 原始串為 au toc h i ps 處理後為 autochips 函式返回9。思路 使用倆個標記i,j都指向字串的末尾,然後i往前走...