劍指02 替換空格

2022-06-08 05:30:10 字數 1048 閱讀 7359

解法一:呼叫自帶函式str.tostring().replace(" ","%20")。

解法二:在當前字串上進行替換。

先計算替換後的字串需要多大的空間,並對原字串空間進行擴容;

從後往前替換字串的話,所有的字元都只複製(移動)一次,時間複雜度是o(n);

如果從前往後替換,每個字串需要多次移動,效率較低。

解法三:開闢乙個新的字串。當遇到 " ",就追加 "%20",否則遇到什麼追加什麼。

總結:  在合併兩個陣列(包括字串)時,如果從前往後複製每個數字(或字元)則需要重複移動數字(或字元)多次,那麼可以考慮從後往前複製,這樣就能減少移動的次數,從而提高效率。

public

class

solution

}

public

class

solution

}//newlength為把空格替換成'%20'之後的長度

int newlength = originallength + spacenum * 2;

str.setlength(newlength);

//對stringbuffer擴容!!

int indexoforiginal = originallength - 1;

int indexofnew = newlength - 1;

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

else

indexoforiginal --;

}return

str.tostring();

}}

public

class

solution

else

}return

sb.tostring();

}}

public

class

stringbufferbuildertest

}

劍指offer02 替換空格

自己寫的 public class solution return str.tostring 思路 1.統計空格個數count 2.設定新的字串長度newlen 原長度 2 count 3.設定兩個指標,indexold和indexnew,分別指向舊陣列末尾和新陣列末尾,從後向前遍歷。有兩種情況 1...

劍指offer 02替換空格

首先我們先算出整個字串的長度,還有總共多少個空格。因為空格只佔乙個位元組,但是 20 佔兩個位元組,所以新的容量是原來字串長度 空格數 2,然後把新的容量與給定的字串總大小作比較,如果大於給定的大小,就說明給的用例出錯了,直接返回。如果沒出錯,從原來字串末尾開始遍歷,如果是空格,則依次附給新字串同時...

劍指offer 02 替換空格

1 統計字串的長度和空格的個數 2 定義兩個指標分別指向原字串的末尾和替換後字串的末尾 3 移動兩指標,遇到空格進行替換,直到兩指標相遇結束 class solution int strlen 0 字串實際長度 int spacenum 0 空格個數 int i 0 while str i 0 st...