随笔分类 - Algorithm---String Solving Problems
摘要:一道模拟题,来模拟进位暴力的从右往左扫描,按规则求后继就好了。除了Sample已给出的,还有一些需要注意的地方:9的后继是10,而不是00;(z)的后继是(aa),而不是a(a);输入虽然最长只有100,但输出最长可能有102。事实上题目中给的字符串后继规则,也是Ruby中String#succ或S...
阅读全文
摘要:这也是一道例题给定一个字符串,求至少出现 k 次的最长重复子串,这 k 个子串可以重叠。算法分析:这题的做法和上一题差不多,也是先二分答案,然后将后缀分成若干组。不同的是,这里要判断的是有没有一个组的后缀个数不小于 k。如果有,那么存在k 个相同的子串满足条件,否则不存在。这个做法的时间复杂度为 O...
阅读全文
摘要:和上一题一样,不过这题只是要求最长回文子串的长度在此采用了非常好用的Manacher算法据说还是O(n) 的效率QAQ详细用法参考了上篇博客的参考资料,这两天有空学习一下~Source code://#pragma comment(linker, "/STACK:16777216") //for c...
阅读全文
摘要:最长回文子串 相关资料:1、暴力法2、动态规划3、中心扩展4、Manacher法http://blog.csdn.net/ywhorizen/article/details/6629268http://blog.csdn.net/kangroger/article/details/37742639在...
阅读全文
摘要:解题思路:找到公共子串然后升序输出坑的地方就在于输入是存在相同字母的 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define MIN( x, y ) ( (x) < (y) ? (x) : (y) ) 7 #define INF 0x7fffffff 8 #define KIND 26 9 #define MAXN 1210 using namespace std;11 12 char str[MAXN];13 int hash[KIND], ans[KIND];14 15 int main(){16 ...
阅读全文