
字符串
binling
这个作者很懒,什么都没留下…
展开
-
预处理在快速判断两个单词是否有相同字符的应用
这里面利用到单词的字符集是有限的这一特性,比如,英文单词就是26个字母,可以把一个单词包含的字母的情况,转化为一个26位的位图,两个单词如果有相同的字母,那么相应的bit位置上就同为1。把位图当成一个数,两个位图做一个“与”操作,结果为0就得出对应的单词无重复字符。,一般的做法是,采用辅助的集合类容器,先遍历一个字符串,把它的字符放到集合中;如果是一个单词的集合,需要判断两两判断两个单词是否有重复字符,按照上面的算法,总的复杂度变为 O(n * len), len是字符串长度的上限。...原创 2022-08-10 17:50:51 · 371 阅读 · 0 评论 -
求满足某种条件的子串问题- 滑动窗口法
维护一个invariant,窗口对应的子串始终满足给定条件 滑动的方式是:右边滑动,直到破坏这个invariant。原创 2014-12-02 20:17:45 · 524 阅读 · 0 评论 -
子串/子段问题总结
1. 一般子串问题:求一个串中满足某种条件的子串 1)如果所求子串的条件是一个值,比如sum,则考虑子段问题,注意这样一个性质,子段= 前缀差,子段和=前缀和的差, 2)如果满足满足滑动窗口的条件,滑动窗口法。 3)回文子串等不满足1),2)的,dp的方向考虑 4)暴力,但注意不是枚举所有子串(O(n^2))而是枚举终点。 2. 两个串中子串问题,或者一个串中多个子串问题 LC原创 2014-12-03 09:23:03 · 553 阅读 · 0 评论 -
字符编码问题
Given a byte array, which is an encoding of characters. Here is the rule: a. If the first bit of a byte is 0, that byte stands for a one-byte character b. If the first bit of a byte is 1, t原创 2015-07-10 15:01:52 · 463 阅读 · 0 评论 -
回文问题汇总
1最长回文子串 O(n^2) 枚举中心法 DP O(n) Manacher算法 2 最小割:最少割多少下,把字符串切割成全都是回文子串 DP 3 最少插入几个字符把原字符串变成一个回文串 1)只插前面 2)前后都可以插 3)任意位置可以插 DP O(n^2) #include #include using namespace std; const int MAXN原创 2015-06-29 20:59:56 · 740 阅读 · 0 评论