Island Life

< 先々週に撮影したCentral Pacific... | 表現の訓練の場 >

2009/02/06

文字列検索

文字列検索 - ときどきの雑記帖 i戦士篇

KMPとかBM ってマルチバイト文字とか幅広文字に使うの面倒だよねえ。

  • BMはナイーブに書くと文字集合と同じ大きさのテーブルが必要になっちゃうけど、 utf-8文字列ならオクテット列に対して直接使えるからテーブルエントリは256で済む。
  • KMPのリスタートベクタは文字集合の大きさとは関係無く検索文字列の長さで決まるから wide charでもutf-8なmultibyte charでもさして問題ない。

というわけで、mb1 : utf-8のように文字境界を誤ることのないmultibyte encoding、 mb2 : euc-jpのようにランダムアクセスで文字境界が確定しないmultibyte encoding、 とすると、こんなふうに理解してる:

wchar mb1 mb2
BM × ×
KMP ×

Tag: Programming