輸入兩個字串,從第一字串中刪除第二個字串中所有的字元。例如,輸入」they are students.」和」aeiou」,則刪除之後的第乙個字串變成」thy r stdnts.」。
這裡注意:從乙個字串中刪除字串的時候,如果是通過刪除乙個字串就移動後面所有的字元,就非常複雜了。
通過hash表記錄第二個字串**現的字元,hash表可以由長度為256的bool陣列表示。
然後遍歷第乙個字串,每掃瞄乙個字元,通過檢查hash表判斷該字元是否在第二個字串出現過,如果是,則刪除,否則繼續。
那麼如果在字串中刪除字元呢?一般而言,每刪除乙個字元,後面的字元必須往前移,如果每個字元都需要這麼操作的話,複雜度就很高了。
解決辦法:通過兩個指標,乙個用於遍歷字串pfast,乙個用於刪除字元pslow,當pfast指標所指字元沒有在第二個字串出現過,則*pslow=*pfast,pslow++,即保留該位置的字元,否則,pslow不變,當遍歷完字串之後,*pslow='\0',以表示刪除字元後的新字串。
#include
using
namespace
std;
void
deletechars(
char
* str1,
char
* str2)
char
* pslow=str1;
char
* pfast=str1;
while
(*pfast!=
'\0'
)
pfast++;
}
*pslow=
'\0'
;
}
int
main()
獲取乙個字串在乙個長字串中出現的次數
獲取乙個字串 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 判斷右面...