請實現乙個函式,將乙個字串中的空格替換成「 2」

2021-08-17 14:53:02 字數 1454 閱讀 6023

/*

題目描述

請實現乙個函式,將乙個字串中的空格替換成「%20」。

*//*

分析將長度為1的空格替換為長度為3的「%20」,字元差的產度變長。

如果允許我們開闢乙個新的陣列來存放替換空格後的字串,

那麼這道題目就非常簡 單。設定兩個指標分別指向新舊字串首元素,

遍歷原字串,如果碰到空格就在新字串上填入「%20」,

否則就複製元字串上的內容。但是如果面試官要求

在原先的字串上操作,並且保證原字串有足夠長的空間來存放替換後的字串,

那麼我們就得另想方法。

如果從前往後替換字串,那麼儲存在空格後面的字串肯定會被覆蓋,

那麼我們就考慮從後往前進行替換。

首先遍歷原字串,找出字串的長度以及其中的空格數量,

根據原字串的長度和空格的數量我們可以求出最後新字串的長度。

設定兩個指標point1和point2分別指向原字串和新字串的末尾位置。

如果point1指向內容不為空格,那麼將內容賦值給point2指向的位置,

如果point1指向為空格,那麼從point2開始賦值「02%」

直到point1==point2時表明字串中的所有空格都已經替換完畢。

*//*

time:2016-9-8 15:48:57

author:codingmengmeng

*/#include

using

namespace

std;

//length為系統規定字串輸出的最大長度,固定為乙個常數

class

solution

//根據原字串的長度和空格的數量我們可以求出最後新字串的長度

int newstringlen = oldstringlen + blanknumber * 2;//

新字串的長度

if (newstringlen>length)

return

; str[newstringlen] = '

\0';//

此行很重要,因為原字串最後乙個字元為'\0'

//設定兩個指標point1和point2分別指向原字串和新字串的末尾位置

int point1 = oldstringlen - 1, point2 = newstringlen - 1;//

因為'\0'已經手工加到最後新串的最後乙個字元,所以減1咯

while (point1 >= 0 && point2>point1)

else

//如果point1指向內容不為空格,那麼將內容賦值給point2指向的位置

str[point2--] =str[point1];

point1--;//

不管是if還是else都要把point1前移,為了下一次的執行

} }

};

將乙個字串逆序

這個題要我自己寫還不太有思路,可能不會想到寫三個函式,而且這個 也沒有執行出來 include include include pragma warning disable 4996 有乙個字元陣列的內容為 student a am i 請你將陣列的內容改為 i am a student 要求 不能...

在乙個字串中尋找另外乙個字串

在乙個字串中尋找另外乙個字串 public class text foundit true break test system.out.println foundit?found it didn t find it 該段程式有點難以理解,主要就是if語句的理解,if searchme.charat ...

將乙個字串中的字元替換成另乙個字串

被替換的字串當然不僅僅是空格,上面只是個例子 include include include using namespace std int findnumberfirst const char str,const char dest,vector pvec else return count in...