天天看點

【字元串處理算法】删除特定的字元的算法設計及C代碼實作

一、需求描述

輸入一個長字元串和一個短字元串,編寫程式從長字元串中将在短字元串出現過的字元删除掉。

例如,長字元串為“1234abcd”,短字元串為“3a”,那麼經程式處理之後的字元串為“124bcd”;又如,長字元串為“good bye”,短字元串為“obh”,那麼經程式處理之後的字元串為“gd ye”。

二、算法設計

我們可以通過将長字元串中的字元逐個與短字元串中的字元相比較來判斷是否應該将某個字元從長字元串中删除掉。

即如果長字元串為“1234abcd”,短字元串為“2a”,那麼先将長字元串中的第一個字元“1”分别與短字元串中的“2”和“a”相比較,發現都不相等,于是将字元“1”加入到新的字元串中;接着将長字元串中的第二個字元“2”分别與短字元串中的“2”和“a”相比較,發現有相等的,于是不将字元“2”加入到新的字元串中;如此循環執行,直到長字元串中的所有字元都比較完成。

三、特殊流程考慮

在編寫程式的過程中,我們要對輸入的字元串的長度及格式多做考慮,如:

1.如果輸入的兩個字元串之一含有中文字元,那麼程式直接傳回而不執行後續流程。

2.如果輸入的短字元串的長度大于了長字元串的長度,那麼程式直接傳回而不執行後續流程。

四、程式代碼

五、程式測試

我們将編寫好的程式“RemoveChars.c”上傳到Linux機器,并使用“gcc -g -o RemoveCharsRemoveChars.c”指令對該程式進行編譯,生成“RemoveChars”檔案。下面對程式進行詳細的測試。

1.輸入長字元串為“1234abcd”,短字元串為“2a”時,程式運作情況如下:

Please input the long string:

1234abcd

InputLongStr=1234abcd

Please input the short string:

2a

InputShortStr=2a

Remove chars of 2a from 1234abcd, the new str is: 134bcd

2.輸入長字元串為“Happy dog!”,短字元串為“ao”時,程式運作情況如下:

Happy dog!

InputLongStr=Happy dog!

ao

InputShortStr=ao

Remove chars of ao from Happy dog!, the new str is: Hppy dg!

3.輸入長字元串為“我們123”,短字元串為“345”時,程式運作情況如下:

我們123

InputLongStr=我們123

345

InputShortStr=345

我們123 has Chinese character, please check!

4.輸入長字元串為“12345”,短字元串為“234567”時,程式運作情況如下:

12345

InputLongStr=12345

234567

InputShortStr=234567

234567 is longer than 12345, please check!

5.輸入長字元串為“abcdsf”,短字元串為“af2”時,程式運作情況如下:

abcdsf

InputLongStr=abcdsf

af2

InputShortStr=af2

Remove chars of af2 from abcdsf, the new str is: bcds

六、需求擴充

基于本文中的需求和程式,我們可考慮對需求進行以下擴充:

1.如果短字元串中的某個字元在長字元串中存在,那麼在長字元串的對應位置用空格占位,而不是直接将該字元從長字元串中删除。

2.不限制輸入字元串中不能出現中文字元,即如果長字元串為“我們123”,短字元串為“我1”,那麼經程式處理之後的字元串為“們23”。

繼續閱讀