在算法4-1中已經(jīng)描述過一種定位子串的算法,但其依賴字符串的其他操作(使用了算法4-3描述的子串提取以及字符串比較)。
下面給出書中另一種相對獨立的定位子串算法:
圖:求子串位置的定位函數(shù)
書中的算法思想是這樣的:分別利用計數(shù)指針i和j指示主串S和模式串T中當前正待比較的字符位置。算法的基本思想是:從主串S的第pos個字符起和模式的第一個字符比較之,若相等,則繼續(xù)逐個比較后續(xù)字符,否則從主串的下一個字符起再重新和模式的字符比較之。依次類推,直至模式T中的每個字符依次和主串S中的一個連續(xù)的字符序列相等,則稱匹配成功,函數(shù)值為和模式T中第一個字符相等的字符在主串中的序號,否則稱匹配不成功,函數(shù)值為零。
你的任務(wù)是將S中每次比較的字符輸出來,并將匹配的序號輸出。
3組字符串,每組字符串占一行。每行包含由空格分隔的兩個字符串,字符串僅由英文小寫字母組成且長度不大于100。3組字符串,每組字符串占一行。每行包含由空格分隔的兩個字符串,字符串僅由英文小寫字母組成且長度不大于100。
每組數(shù)據(jù)輸出2行,第一行是S中每次比較的字符,第二行是后一個字符串在前一個字符串中的位置,如果不匹配,則輸出0。
string str thisisalongstring isa nosubstring subt
str 1 thisisisa 5 nosubsubsttring 0
零基礎(chǔ)的同學可以先學習基礎(chǔ),教程見: C語言教程、C++教程、編譯器教程、數(shù)據(jù)結(jié)構(gòu)教程、Python教程、單片機教程等
視頻教學見視頻網(wǎng)課