微博上看到的一个查询相同字符的方法
来源:互联网 发布:多表查询sql语句 编辑:程序博客网 时间:2024/06/06 01:35
题目:
假设这有一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串里的字母数相对少一些。从算法是讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有?
比如,如果是下面两个字符串:
String 1: ABCDEFGHLMNOPQRS
String 2: DCGSRQPOM
答案是true,所有在string2里的字母string1也都有。如果是下面两个字符串:
String 1: ABCDEFGHLMNOPQRS
String 2: DCGSRQPOZ
答案是false,因为第二个字符串里的Z字母不在第一个字符串里。
一般解答方法:
(1)轮询第二个字符串里的每个字母,看它是否同在第一个字符串里。从算法上讲,这需要O(n*m)
次操作,其中n是string1的长度,m是string2的长度。就拿上面的例子来说,最坏的情况下将会有16*8 = 128次操作。
(2)一个稍微好一点的方案是先对这两个字符串的字母进行排序,然后同时对两个字串依次轮询。两个字串的排序需要(常规情况)O(m log m) + O(n log n)
次操作,之后的线性扫描需要O(m+n)
次操作。同样拿上面的字串做例子,将会需要16*4 + 8*3 = 88加上对两个字串线性扫描的16 + 8 = 24的操作。(随着字串长度的增长,你会发现这个算法的效果会越来越好)
牛逼的方法:
给每个字母分配一个素数,从2开始,往后类推。这样A将会是2,B将会是3,C将会是5,等等。现在我遍历第一个字串,把每个字母代表的素数相乘。你最终会得到一个很大的整数,对吧?然后 —— 轮询第二个字符串,用每个字母除它。如果除的结果有余数,这说明有不匹配的字母。如果整个过程中没有余数,你应该知道它是第一个字串恰好的子集了。
- 微博上看到的一个查询相同字符的方法
- 一个很不错的查询重复字符的方法
- 群里面看到的一个sql查询的问题
- 去除相同的字符
- 查询一个表某列 的 项的 相同项的百分比
- 看到一个有趣的
- 看到的一个笑话
- MySql 几种查询相同字段中相同数据,及删除相同字段的相同数据的方法
- 去掉一个文本中每行开头相同的特殊字符
- c#一个字符串中如何去掉相同的字符
- 匹配一个2个相邻并且相同的字符
- 如何判断一个字符串是否由相同的字符组成
- 给定一个字符串,找到最先出现的相同字符
- 获取字符串中相同字符串之间字符的方法
- 替换字段中第一个相同字符的方法
- 如何查询一个数据库表中某字段相同记录的数据
- 查询一个表中的两个字段值相同的数据
- 查询一个表中的两个字段值相同的数据
- .java.io.StreamCorruptedException: invalid type code: AC解决办法
- Java类装载的过程及原理介绍
- 绿化软件之常用工具
- ios UItableview的使用
- acl_cpp中流式编程的设计
- 微博上看到的一个查询相同字符的方法
- 网络安全
- Qt学习:项视图类之自定义委托
- 养成良好的Sql习惯
- Httpwatch中http状态码列表
- JS截取字符串substr 和 substring方法的区别
- shell date 获取昨天日期及几种特殊格式
- IE6异步请求缓存导致的乱码问题
- android OpenGl Es实现正方体多纹理