在乙個長字串中刪除乙個短字串

2021-09-22 21:33:33 字數 1179 閱讀 9599

輸入兩個字串,從第一字串中刪除第二個字串中所有的字元。例如,輸入」they are students.」和」aeiou」,則刪除之後的第乙個字串變成」thy r stdnts.」。

這裡注意:從乙個字串中刪除字串的時候,如果是通過刪除乙個字串就移動後面所有的字元,就非常複雜了。

通過hash表記錄第二個字串**現的字元,hash表可以由長度為256的bool陣列表示。

然後遍歷第乙個字串,每掃瞄乙個字元,通過檢查hash表判斷該字元是否在第二個字串出現過,如果是,則刪除,否則繼續。

那麼如果在字串中刪除字元呢?一般而言,每刪除乙個字元,後面的字元必須往前移,如果每個字元都需要這麼操作的話,複雜度就很高了。

解決辦法:通過兩個指標,乙個用於遍歷字串pfast,乙個用於刪除字元pslow,當pfast指標所指字元沒有在第二個字串出現過,則*pslow=*pfast,pslow++,即保留該位置的字元,否則,pslow不變,當遍歷完字串之後,*pslow='\0',以表示刪除字元後的新字串。

#include

usingnamespacestd;

voiddeletechars(char* str1,char* str2)

char* pslow=str1;

char* pfast=str1;

while(*pfast!='\0')

pfast++;

}

*pslow='\0';

}

intmain()

獲取乙個字串在乙個長字串中出現的次數

獲取乙個字串 kk 在乙個長字串中出現的次數 思路 1 定義乙個計數器 2 獲取 kk 第一次出現的位置。3 從第一次出現位置後剩餘的字串中繼續獲取 kk 出現的位置,每獲取一次就計數一次。4當獲取不到時,計數完成,返回計數器的值。public class exercise2 return coun...

在乙個字串中尋找另外乙個字串

在乙個字串中尋找另外乙個字串 public class text foundit true break test system.out.println foundit?found it didn t find it 該段程式有點難以理解,主要就是if語句的理解,if searchme.charat ...

asp 字串刪除最後乙個逗號

判斷字串長度是否大於0 if len gnomber 0 then 判斷左面第乙個是不是 如果是的話從第二位開始取數值 if left gnomber,1 then gnomber mid gnomber,2 end if 判斷字串長度是否大於0 if len gnomber 0 then 判斷右面...