標籤:內容 過程 執行 返回 csdn 好的 可見 標點符號 ase
一、需求描寫敘述
給定一個長字串和一個短字串。編敲代碼推斷短字串中的全部字元是否都在長字串中。假設是,則長字串包括短字串;反之,不包括。
為了盡量包括大多數情況,字串中能夠包括大寫和小寫英文字母、數字和各種標點符號。而且區分大寫和小寫字母。
以下舉幾個範例予以說明:
1.假設長字串是“ABCDE”,短字串是“ADC”,那麼短字串中的全部字元都在長字串中。即長字串包括了短字串。
2.假設長字串是“ABCDE”,短字串是“ADCF”。那麼短字串中不是全部字元都在長字串中,即長字串不包括了短字串。
3.假設長字串是“ABCDE”,短字串是“AAB”,那麼短字串中的全部字元都在長字串中。即長字串包括了短字串。
二、演算法設計
我們都知道。就像人體是由一個個的細胞組成一樣,一個字串是由一個個的字元組成。假設組成某個字串的全部字元都在還有一個字串中。那麼這個字串就被還有一個字串包括。
因此。我們能夠考慮先將兩個字串中的全部字元都找出來,再推斷較短的字串中的全部字元是否都出如今了較長的字串中。假設是,那麼兩個字串是包括與被包括的關係。假設不是,那麼兩個字串則“形同陌路”。
程式的整體流程1所看到的。
圖1 程式的整體流程
三、特殊流程考慮
在編敲代碼的過程中,我們要對輸入的兩個字串的長度及格式多做考慮,如:
1.假設輸入失誤,導致短字串的長度大於了長字串。那麼程式直接返回,不進行興許處理。
2.不同意在輸入字串的中間出現空格,假設出現了,僅僅能把空格前面的內容作為輸入的字串。
3.輸入字串能夠包括字母(區分大寫和小寫)、數字、標點符號等字元。
4.為了方便程式處理,設定較長的字串最長為500個位元組,較短的字串最長為100個位元組。
四、程式碼
五、程式測試
我們將編寫好的程式“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!
可見,對於上面考慮到的幾種特殊情況,程式均能做出正確的處理。
六、需求擴充
基於本文中的需求和程式,我們可考慮對需求進行以下擴充:
1.限制輸入的字串中僅僅能包括字母。假設包括了其他字元,則直接退出而不進行處理。
2.假設較短的字串中的全部字元儘管都在較長的字串中,但某個字元在較短的字串中出現的次數大於了在較長的字串中出現的次數,那麼就覺得較長的字串不包括較短的字串。
【字串處理演算法】字串包括的演算法設計及C代碼實現