后缀数组应用(最长重复子字符串)
来源:互联网 发布:知乎 南京装修工作室 编辑:程序博客网 时间:2024/05/22 07:47
给定一个输入字符串,查找其中最长的重复子字符串。例如“banana”的最长重复子字符串是“ana”。
#include <iostream>#include <stdlib.h>#include <stdio.h>using namespace std;#define MAXN 5000char *buf[MAXN];int pstrcmp(const void *p, const void *q){ return strcmp(*(char**)p, *(char**)q);}int comLen(const char *a, const char *b){if (NULL == a || NULL == b){return -1;}int result = 0;while ((*a != '\0') && (*b != '\0')) {if (*a == *b){result++;}else{break;}a++;b++;}return result;}int maxComLen(char *a, int n){for (int i = 0; i < n; i++){buf[i] = &a[i];} qsort(buf, n, sizeof(char*), pstrcmp);int result = 0;int pos = 0;for (int i = 0; i < n-1; i++){int len = comLen(buf[i], buf[i+1]); if (len > result){result = len;pos = i;}} for (int i = 0; i < result; i++){ cout << buf[pos][i];}cout << endl;return result;}int main(){char a[] = "Ask not what your country can do for you, but what you can do for your country"; cout << maxComLen(a, strlen(a)) << endl;return 0;}
0 0
- 后缀数组应用(最长重复子字符串)
- 利用后缀数组求字符串的最长重复子串
- 使用后缀数组求字符串的最长重复子串
- 后缀数组的应用:最长重复(or回文)子串
- 最长重复子串(后缀数组)
- 后缀数组求最长重复子串
- 后缀数组求最长重复子串
- 后缀数组:最长重复子串 (marked)
- 后缀数组求最长重复子串
- 后缀数组求最长重复子串
- 后缀数组之最长重复子串
- 最长重复子串—后缀数组
- 后缀数组求最长重复子串
- 后缀数组求最长重复子串
- 后缀数组求最长重复子串
- 最长重复子串(后缀数组思想)
- 后缀数组求最长重复子串
- poj 1743 字符串 后缀数组 不可重叠最长重复子串
- JavaScript入门之算术运算符和关系运算符
- SPOJ HUBULLU
- android中dip、dp、px、sp和屏幕密度
- 续:用匿名内部类实现多线程的一小段代码
- Nodejs源码的阅读-事件循环的建立
- 后缀数组应用(最长重复子字符串)
- hdu2807(floyd +快速矩阵计算)
- malloc()和free()的原理
- 虚拟机中ubuntu系统安装VMware-tools
- 再续:匿名内部类调用父类方法或访问父类成员
- A Distributed, Scalable Monitoring System
- 深入理解JVM之内存管理
- 关于HUSTOJ的搭建与virtual judge的设置
- 解决Windows Git Bash中文乱码问题