您好,登錄后才能下訂單哦!
本篇內容主要講解“怎么使用Jerry列出金庸小說中使用過的成語”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么使用Jerry列出金庸小說中使用過的成語”吧!
Jerry簡單講下實現原理。Web應用里有一個文本文件,里面維護了漢語里全部的成語,通過分號分隔。
運行時,這些內容會被加載到內存中,構建成一棵樹,如下圖所示:
其中葉節點以屬性end為true區分。
成語檢索的核心邏輯位于search函數里,讓我們用《笑傲江湖》里一句響亮的口號“日月神教千秋萬載,一統江湖”來單步調試,了解其實現邏輯。
進入165行的外層while循環,再進入173行的內層for循環,檢測是否有測試字符串第一個字符“日”開頭的成語。因為成語是由4個字符組成,所以需要用內層for循環逐一試探,如果遇到tblCur.end為true的元素,說明在測試字符串中發現了一個成語。
下圖是內層for循環第一次執行后的tblCur內容:
內層循環執行第二次,此時tblCur指向一棵由所有“日月”開頭的成語組成的樹:
執行內層循環的第三次迭代,因為在樹“日-月”這個分支下面沒有“神”這個節點,所以結束當前的內層循環,通過break返回到外層的while循環,進行輸入字符串第二個字符“月”的新一輪試探,以此類推。
最后從“千”這個字符出發,沿著內存中的樹經過路徑"秋-萬",最后來到end屬性為true的葉節點“載”,記下“千”在輸入字符串中的偏移量,存到一個數組arrMatch中去。
待輸入字符串全部試探完畢后,根據arrMatch中存放的偏移量,高亮顯示對應的字符串,完成檢索。
樹這個數據結構在這個需求的實現里有著完美的表現。
到此,相信大家對“怎么使用Jerry列出金庸小說中使用過的成語”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。