Android用のソフトキーボードを開発したいのですが、入力文字と辞書からの単語の文字がキーボードの隣にあるかどうかに基づいて提案を行うオートコレクトアルゴリズムをすでに取得しています。これは、レーベンシュタインアルゴリズムと組み合わせて機能します(文字を別の文字に置き換える必要がある場合は、それらが隣接しているかどうかがチェックされます)。そのため、このチェックは非常に頻繁に呼び出されます。現在、自動修正に費やされる時間の50%を消費しています。
私の現在のアプローチは、3層の別々のトライです。最初のレイヤー:最初のキャラクター。2番目のレイヤー:2番目のキャラクター:3番目のレイヤー:キャラクターが隣人である場合に情報を保持するブール値。しかし、私はトライがやり過ぎだと思いますか?すべての子供のためのインターンハッシュマップもそれを遅くするかもしれませんか?独自のcharToNumber関数を使用してハッシュマップを作成する必要がありますか?
これをどのように行いますか?どのボトルネックを回避できますか?Character.toLowerCase()は、チェックが実行されるたびに呼び出される場合にも非効率的であるように見えます。
私はあなたが私が仕事をスピードアップするのを手伝ってくれることを願っています:)