刪除指定字元

2021-06-27 10:18:05 字數 734 閱讀 5871

題目: 

刪除字串中的「b」和「ac」,需要滿足如下的條件:

例如:

進一步思考:如何處理aaccac呢,需要做哪些改變呢?

分析:首先要明白從字串中刪除某些字元該如何實現,顯而易見我們可以把保留的字元拷貝新的字串中來實現刪除。但是題目要求不能使用額外的空間。那就是將要刪除的字元全部交換到字串的尾部,然後設定乙個'\0'表示字串的結尾。

其次,如果要刪除的都是單個字元的字串,就很直接:我們使用i和j兩個變數遍歷字串,i表示不會刪除的字元的位置,j從0開始,只要i所在位置的字元不是要刪除的字元,就str[j]=str(str表示字串),然後j++指向下乙個位置。一次遍歷即可,不需要額外申請空間,只需要兩個變數。

但是,現在刪除的字串中有多個字元的,如:「ac」。那要如何處理呢?這裡介紹乙個小技巧:狀態機。這裡,我們有兩個狀態:one和two。two表示,前乙個字元時『a』的狀態,其他的都用one表示。還是採用前面所描述的遍歷方法:

如果當前狀態為two:

狀態轉換非常簡單,就是每次都檢查,是前乙個字元為『a』。基本**如下:

下面進一步考慮: 根據上面的演算法,我們考慮aaccac,最終得到ac。ac在題目中要求的也是要刪除的。是否要刪除這個ac,就需要和面試官進行交流了,無論如何,總是要考慮這種情況。還是採用上面的演算法,怎麼解決刪除之後還可以刪除的情況?其實非常簡單,只需要做很小的修改,我們在迴圈最後加上這個**即可:

刪除字元

(出處: 待字閨中)

mysql 刪除指定字元

mysql 刪除指定字元 1.1 前言 實際需求中如果想刪除指定的字元,一般需要使用到trim函式。trim函式預設刪除字元的前後空格,如果想指定刪除特定字元,則需要使用一下語句進行宣告。1.2 刪除指定字元 從左側依次開始匹配字元並刪除,匹配失敗則停止匹配 select trim leading ...

字串刪除指定字元

一 演算法描述 給定乙個字串和模式字串,要求將出現在模式字串的字元在原字串中刪除。二 演算法思路 從題面理解,常規思路是遍歷原字串和模式字串,將原字串的每個字元和模式串的每個字元比較,如果比較相等,則不輸出,其時間複雜度為o m n m和n各自為字串和模式字串的長度 另一種高效的思路是以空間換時間,...

C string 字串刪除指定字元

今天遇到的情況時需要刪除時間戳裡的 只留下數字。想找比較簡單的實現方法,找了半天,發現的方案 用stl的string的 find 和 erase 首先,通過find找到需要刪除的字元 字串的位置 string str string target int pos str.find target 然後通...