問題描述:輸入兩個字串str1和p,將str1中的某個字元替換為字串p。
分析:這個問題其實就是程式語言裡的字元替換庫函式,我們需要自己去實現,需要找出一種高效的辦法,對於這道題存在兩種解法。
解法一:從頭開始掃瞄字串str1,每次遇到空格後,插入字串p,再插入字串p之前,需要先將空格後面的字元往後挪位,然後在將p插入即可。
此方法很直觀,也很容易想到,但是時間複雜度卻達到了o(n^2),效率很低。
解法二:從尾到頭掃瞄,剛看到這裡讀者會以為是一樣的,只不過是從後面開始而已,其實不然,下面具體分析,
1. 我們可以先求出字串中的特定字元出現的次數,這裡我們以空格為例,然後求出插入字串p後最後字串的長度。
2.設定兩個指標,p1和p2,p1指向原來字串的末尾,p2指向最終字串的末尾
3.然後p1開始向左移動,如果p1所指字元不是空格,則將該字元複製到p2所指位置處,p1和p2都向左移動一位;
如果p1所指字元是空格,則此時將p字串倒序插入p2所指位置處,直到插入完畢,然後p1向左移動一位。
4.直到p1==p2時,表明所有的字元替換完畢。
此方法的時間複雜度為o(n),是不是比解法一要簡單的多啊,讀者應該掌握這種方法。
通過這道題目,可以發現有時候逆向思維可以是問題簡單化!
1public
class
main 25}
26for(int i=0;i//
把字元陣列中的字元複製到字串中
27 str1+=ch[i];
28return
str1;29}
3031
public
static
void
main(string args)
3738 }
輸出結果為:
問題 D 字串替換
時間限制 1 sec 記憶體限制 128 mb 狀態 提交 命題人 外部匯入 題目描述 小明最近迷上了字串操作。對每個字串,小明每次可以執行以下兩種操作之一 把字串中的某個字元改成任意乙個其他字元,花費1的代價。交換字串中的兩個字元,花費0的代價。小明發現,把乙個字串通過一系列的操作,可以轉換成任何...
java字串替換的問題
今天工作中遇到乙個問題,需要輸出mongodbobject中的部分內容,當我轉換成字串以後出現了好像無法替換的問題,經過驗證,發現並非是不能替換,只是想法錯誤而已。package demo 輸出字串中的chenggongzhimu,shibai,count,123 author tuzongxun ...
asp字元替換
st 你好,請問你是的嗎?希望能支援我們的調查.dim a 2 b 2 a 0 a 1 a 2 b 0 alex b 1 先生 b 2 電信 function replacetest patrn,replstr dim regex 建立變數。set regex new regexp 建立正規表示式。...