wpcockroach

导航

2009年3月17日 #

位运算的一些技巧集锦

摘要: 1. 判断一个自然数是否是2n形式(n >= 0)bool IsPowerOfTwo(int x){ return ((x & (x - 1)) == 0 ) && (x != 0);} 2. 求两个整数的平均值单纯的(x+y)/2可能存在x+y溢出的风险。int Average(int x, int y){ return (x & y) + ((x ^ y) >> 1);} 3. 计算整数绝对值template <typename T>T Abs(T x){ T y = x >> ((sizeof(T) << 阅读全文

posted @ 2009-03-17 23:47 wpcockroach 阅读(274) 评论(0) 推荐(0) 编辑

字符串的编辑距离

摘要: 字符串的编辑距离也被称为Levenshtein距离(Levenshtein Distance),一般用动态规划来实现。属于经典算法。这里对编辑距离进行简单的分析(经典算法,所以记录一下:-))。我们假定函数dist(str1, str2)表示字串str1转变到字串str2的编辑距离,那么对于下面3种极端情况,我们很容易给出解答(0表示空串)。dist(0, 0) = 0dist(0, s) = strlen(s)dist(s, 0) = strlen(s)对于一般的情况,dist(str1, str2)我们应该如何求解呢?假定我们现在正在求解dist(str1+char1, str2+char 阅读全文

posted @ 2009-03-17 23:07 wpcockroach 阅读(2666) 评论(0) 推荐(1) 编辑