字符串是否包含问题--算法学习--不断优化才是算法的王道
2011-11-29 16:01
197 查看
问题描述: 有两个字符串A和B现在要判断A中是否包含B
例如A = ABCDEFGHLMNOPQRS B = DCGSRQPOM
这个例子中,A包含B中字母
如果A = EFGHIGKIOIDSDO B = ZXSDDF 则不包含
相信的讨论可以参考http://blog.csdn.net/v_JULY_v/article/details/6347454,这里笔者作为学习笔记重点说一下最后一种思路
思路1. 排序 然后比较 效率是 log(m)*m + log(n)*n
思路2 用计数排序,效率明显提高到 (n+m),但是牺牲26个字符空间
思路3 hash 本质思路和计数排序一样
思路4 用素数法,最好的情况效率可以降低到n+1,最坏的情况变成n+m,基本上是最高的效率了。但是算法似乎有一一个致命的伤,就是选取到26个素数就很大了,如果字符串A很长,那么一定会相乘溢出,所以实用性应该还是比较小的
例如A = ABCDEFGHLMNOPQRS B = DCGSRQPOM
这个例子中,A包含B中字母
如果A = EFGHIGKIOIDSDO B = ZXSDDF 则不包含
相信的讨论可以参考http://blog.csdn.net/v_JULY_v/article/details/6347454,这里笔者作为学习笔记重点说一下最后一种思路
思路1. 排序 然后比较 效率是 log(m)*m + log(n)*n
思路2 用计数排序,效率明显提高到 (n+m),但是牺牲26个字符空间
思路3 hash 本质思路和计数排序一样
思路4 用素数法,最好的情况效率可以降低到n+1,最坏的情况变成n+m,基本上是最高的效率了。但是算法似乎有一一个致命的伤,就是选取到26个素数就很大了,如果字符串A很长,那么一定会相乘溢出,所以实用性应该还是比较小的
相关文章推荐
- 学习笔记之TAOCP--字符串是否包含问题(学习“结构之法”博客)
- 程序员编程艺术学习笔记(二)字符串是否包含问题
- 【和LULY大神学算法】字符串是否包含问题
- 【算法】字符串是否包含问题
- 数据结构——算法之(011)( 字符串是否包含问题)
- 数据结构——算法之(042)(字符串移位包含的问题, s1是否可以由s2移位后得到)
- [整理]程序员编程艺术:第二章、字符串是否包含问题
- 两个字符串是否包含问题
- H面试程序(11): 判断字符串是否包含子串问题
- 每日学习总结:DropDownList是否已选择验证、存储过程参数为sql字符串问题、将截断字符串或二进制数据。\r\n语句已终止
- 字符串包含问题算法
- 一个字符串是否包含另一个字符串的问题
- 模式匹配(pattern matching)问题:判断一个长为n的字符串X中是否包含常为m的字串Y(m<=n)
- 字符串是否包含问题及扩展
- 程序员编程艺术:第二章、字符串是否包含问题
- 字符串是否包含的问题
- 程序员编程艺术:第二章、字符串是否包含及匹配/查找/转换/拷贝问题
- 小白学习JS----判断是否包含某个字符串
- 一道俩个字符串是否包含的问题
- 字符串是否包含问题