a、字符串的数据结构:如后缀数组
a1.散列。非常快的数据结构,而且较容易实现
a2.平衡树。这个结构即使是在输入不正当的情况下也有非常好的性能,并且已经优雅地打包到了C++标准模板库set和map的大多数实现中。
a3.后缀数组。初始化指向文本串中的每个字符的指针数组,将其排序,这样就得到了一个后缀数组。然后你就可以扫描该数组,找到其最近的字符串或使用二分查找法查找单词或词组。
b、使用库还是定制的组件?
C++的set、map和string使用起来都非常方便,便是其通用而强大的接口意味着其效率没有专用的散列函数高。其他库组件的效率很高:散列使用的strcmp,后缀数组使用的qsort。我看了一下bsearch和strcmp的库实现,来创建马尔科夫程序中的二分查找和wordncmp函数。
a1.散列。非常快的数据结构,而且较容易实现
a2.平衡树。这个结构即使是在输入不正当的情况下也有非常好的性能,并且已经优雅地打包到了C++标准模板库set和map的大多数实现中。
a3.后缀数组。初始化指向文本串中的每个字符的指针数组,将其排序,这样就得到了一个后缀数组。然后你就可以扫描该数组,找到其最近的字符串或使用二分查找法查找单词或词组。
b、使用库还是定制的组件?
C++的set、map和string使用起来都非常方便,便是其通用而强大的接口意味着其效率没有专用的散列函数高。其他库组件的效率很高:散列使用的strcmp,后缀数组使用的qsort。我看了一下bsearch和strcmp的库实现,来创建马尔科夫程序中的二分查找和wordncmp函数。