字元替換問題

2022-09-08 17:51:10 字數 924 閱讀 2861

問題描述:輸入兩個字串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),是不是比解法一要簡單的多啊,讀者應該掌握這種方法。

通過這道題目,可以發現有時候逆向思維可以是問題簡單化!

1

public

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 建立正規表示式。...