/*題目描述
請實現乙個函式,將乙個字串中的空格替換成「%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...