【字符串處理算法】字符串包括的算法設計及C代碼實現

1、需求描寫敘述算法

給定一個長字符串和一個短字符串。編敲代碼推斷短字符串中的所有字符是否都在長字符串中。假設是,則長字符串包括短字符串;反之,不包括。post


爲了儘可能包括大多數狀況,字符串中可以包括大寫和小寫英文字母、數字和各類標點符號。並且區分大寫和小寫字母。spa


如下舉幾個樣例予以說明:設計

1.假設長字符串是「ABCDE」,短字符串是「ADC」,那麼短字符串中的所有字符都在長字符串中。即長字符串包括了短字符串。字符串


2.假設長字符串是「ABCDE」,短字符串是「ADCF」。那麼短字符串中不是所有字符都在長字符串中,即長字符串不包括了短字符串。input


3.假設長字符串是「ABCDE」,短字符串是「AAB」,那麼短字符串中的所有字符都在長字符串中。即長字符串包括了短字符串。string

 

2、算法設計編譯

咱們都知道。就像人體是由一個個的細胞組成同樣,一個字符串是由一個個的字符組成。假設組成某個字符串的所有字符都在還有一個字符串中。那麼這個字符串就被還有一個字符串包括。class


所以。咱們可以考慮先將兩個字符串中的所有字符都找出來,再推斷較短的字符串中的所有字符是否都出現在了較長的字符串中。假設是,那麼兩個字符串是包括與被包括的關係。假設不是,那麼兩個字符串則「形同陌路」。gcc


程序的總體流程如圖1所看到的。

圖1 程序的總體流程

 

3、特殊流程考慮

在編敲代碼的過程當中,咱們要對輸入的兩個字符串的長度及格式多作考慮,如:

1.假設輸入失誤,致使短字符串的長度大於了長字符串。那麼程序直接返回,不進行興許處理。


2.不一樣意在輸入字符串的中間出現空格,假設出現了,僅僅能把空格前面的內容做爲輸入的字符串。


3.輸入字符串可以包括字母(區分大寫和小寫)、數字、標點符號等字符。


4.爲了方便程序處理,設定較長的字符串最長爲500個字節,較短的字符串最長爲100個字節。

 

4、程序代碼

 

 

5、程序測試

咱們將編寫好的程序「StringContains.c」上傳到Linux機器,並使用「gcc -g -o StringContainsStringContains.c」命令對該程序進行編譯,生成「StringContains」文件。如下對程序進行具體的測試。


1.輸入較長字符串爲「ABCDF」、較短字符串爲「AF」時,程序執行狀況例如如下:

Please input the longer string:

ABCDF

LongerStr=ABCDF

Please input the shorter string:

AF

ShorterStr=AF

ABCDF contains AF!

 

2.輸入較長字符串爲「AB」、較短字符串爲「ABC」時。程序執行狀況例如如下:

Please input the longer string:

AB

LongerStr=AB

Please input the shorter string:

ABC

ShorterStr=ABC

ABC is longer than AB, please check!

 

3.輸入較長字符串爲「awe」、較短字符串爲「rf」時,程序執行狀況例如如下:

Please input the longer string:

awe

LongerStr=awe

Please input the shorter string:

rf

ShorterStr=rf

awe doesn't contain rf!

 

4.輸入較長字符串爲「`11245」、較短字符串爲「45」時,程序執行狀況例如如下:

Please input the longer string:

`11245

LongerStr=`11245

Please input the shorter string:

45

ShorterStr=45

`11245 contains 45!

 

5.輸入較長字符串爲「123」、較短字符串爲「123 45」時,程序執行狀況例如如下:

Please input the longer string:

123

LongerStr=123

Please input the shorter string:

123 45

ShorterStr=123

123 contains 123!

 

可見,對於上面考慮到的幾種特殊狀況,程序均能作出正確的處理。

 

6、需求擴展

基於本文中的需求和程序,咱們可考慮對需求進行如下擴展:

1.限制輸入的字符串中僅僅能包括字母。假設包括了其餘字符,則直接退出而不進行處理。


2.假設較短的字符串中的所有字符儘管都在較長的字符串中,但某個字符在較短的字符串中出現的次數大於了在較長的字符串中出現的次數,那麼就以爲較長的字符串不包括較短的字符串。

相關文章
相關標籤/搜索