编程珠玑NO2

第二章中主要提到了排序、二分搜索、和标识位

首先有三个例子:第一个是在一个顺序文件中存放了很多个32位的整数,要求你求出其中缺少的那个整数。如果内存够大时又该怎么求? 那么尽可能地利用二分搜索,在搜索区间找到该位置

第二个题目是一个字符串在第i位发生了旋转比如:abcdefgh在第3位旋转后:defghabc这个怎么处理?

那就用到一招:ab的反转是ba=(a^r b^r)^r  其中r代表反转

第三个问题是说有一些变位词比如 pots stop tops等,如何在比如字典里找到这些变位词呢?

那就用到标识了,就是每个单词对应一个标识,这个标识就是这个单词的字母排序的结果。比如以上三个的标识都是:opst,那么当遍历一遍后就对应有相同的标识了。直接在标识下分离出来就很方便了。手机处理手机号码和名字时就可以用到这么一招(名字很相似或相同时)。

以上三个例子很具有典型性啊,如何在空间和时间上协调到达空时双赢,那就要不断地挖掘,学习那些大牛吧

posted on 2011-03-23 17:32  kevinferry  阅读(168)  评论(0编辑  收藏  举报