[問題] 有關字串比對

看板C_and_CPP (C/C++)作者 (天空之風)時間14年前 (2011/08/20 12:35), 編輯推噓3(306)
留言9則, 4人參與, 最新討論串1/1
開發平台(Platform):DevC 最近在練習實做課本裡字串的部分比對部分字串 因為程式碼本來就只是用strstr去看有沒有部分相符合 這部分是沒有問題所以我就不放上來了@@ 但突然想試試是否可以做到類似字串拆開比對的效果...舉例來說 如果我今天預設的字串裡面有"abcdefghijk"這樣的字串 想讓使用者自行輸入一串字 是否有辦法做到讓他將自行輸入的字串分別拆成一個字一個字去對預設的字串做比對? (舉例說的話 假如輸入acg 因為3個字母都可以在原本的那串字中看見 所以傳回1 若是輸入dog 其中的'o'並不存在於原本那串字串 所以回傳0 ) 應該採用什麼樣的方式呢? 或是其實有相關的函式只是我沒有找到? 因為原本查的時候似乎沒有找到相關的範例...所以上來請教~謝謝大家>"< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.41.242.246

08/20 12:40, , 1F
最直覺不就一個一個字元慢慢比對不就好了? O(mn)
08/20 12:40, 1F

08/20 13:20, , 2F
相關函式即為strstr,實做面可先去 google 字串搜尋法
08/20 13:20, 2F

08/20 13:21, , 3F
KMP演算法,(Boyer、Moore演算法),(Robin、Karp演算法)
08/20 13:21, 3F

08/20 13:39, , 4F
原po想找的是字元,那把預設字串掃描一次做成統計表,
08/20 13:39, 4F

08/20 13:40, , 5F
輸入的字元與統計表比對即可. 比對時間為常數.
08/20 13:40, 5F

08/20 13:44, , 6F
抱歉,我誤會了.. farmerlu 所說應是較佳之方式。
08/20 13:44, 6F

08/20 13:56, , 7F
實做大概長這樣 http://codepad.org/YRgEzubI
08/20 13:56, 7F

08/20 14:04, , 8F
內建函式有 strtok, strcspn 可應用
08/20 14:04, 8F

08/21 21:18, , 9F
應該是strspn 這樣才能比對....
08/21 21:18, 9F
文章代碼(AID): #1EJpc3LO (C_and_CPP)
文章代碼(AID): #1EJpc3LO (C_and_CPP)