关于传说中的皮裤Guy的面试题

2016-09-03  本文已影响38人  Kent_Zhang

原文位于此处
http://bbs.jointforce.com/topic/19531

我似乎找到了一个O(m+n)的算法,同样简洁但是没有数字相乘造成太大数字的风险,无论多长的两个字符串,都只需要消耗一个8个字节的额外内存用于计算。

简单的说就是运用位运算,由于大小写字母总共有52个,所以可用一个长整型64位,每一位代表其中某一个字母。先遍历短字符串,对位掩码进行位设置操作,比如存在a则设置最低位为1。

然后遍历长字符串,对每个字母所代表的位进行清0,比如存在a则设置最低位为0。

遍历过后,如果64位长整型仍然非0,则证明短字符串不是长字符串的子集。

以上,叙述比较简单抽象…………实在是没精神多写啊………………

上一篇下一篇

猜你喜欢

热点阅读