2012-06-17 49 views
2

這是我的第一個關於堆棧溢出的問題。一些快速的背景,這不是一個學校項目,只是爲了好玩,練習和學習。我正在嘗試在C中製作一個拼寫檢查器。我遇到的問題是提出可能的單詞來替換拼錯的單詞。C拼寫檢查,字符串概念,算法

我還應該指出,在我的課程中,我們沒有得到更高層次的編程概念,如時間複雜度或算法開發。我說這是因爲我有一種感覺,我真的在問一些關於概念的名字,但我還沒有聽說過。

在其他類似的帖子裏,大多數人建議使用levenshtein距離或穿越帕特里夏樹;僅僅比較子串會是一個問題嗎?該(非常低效)算法我想出來的是:

第一N字符,其中N = length of the misspelled word - 1,到字典中的單詞(他們會從系統文件讀入一個動態分配的數組)

比較如果N拼寫錯誤的單詞中的字符和字典中的單詞匹配,請將其添加到建議列表中;如果沒有更多的找到匹配,減小N

持續到10條建議被發現或N = 0

感覺笨重和尷尬,但它是那種我們的教科書提出瞭如何處理這個。我已經閱讀了關於遍歷樹的wiki文章,並且爲了效率和準確性計算了各種有趣的東西,但是在這一點上他們已經過了頭。任何幫助表示感謝,並感謝您花時間閱讀此內容。

+1

而不是逐字從一個加載的字典檢查到內存,使用散列表,所以你可以有效地減少可能的候選人檢查。 –

回答

3

現代電腦速度快,速度非常快。使用你描述的算法對你進行編碼是值得的,並且看你的機器上你的字典對你有多好。如果它的工作可以接受,那麼太好了!否則,您可以嘗試通過選擇更好的算法來優化它。

所有花哨的算法,你瞭解有以下目標之一或全部:

  • 加快拼寫檢查
  • 提供更好的建議更正

但這如果僅僅重要你嚴重關注性能。編寫自己的代碼執行此操作沒有任何問題。這可能不是很好,但你會學到很多東西,而不是跳進去,並實現一種你還不明白的算法。