求字符串最长连续不重复的字串
来源:互联网 发布:淘宝店铺花钱解冻 编辑:程序博客网 时间:2024/06/04 17:49
思路:dp[c]记录字符c上一次出现的位置。l记录上一个连续不重复字串的左边界,这样就可以更新连续不重复子串的长度。我这里输出的是第一次出现的最长的连续不重复子串。
#include <algorithm>#include <iostream>#include <sstream>#include <cstring>#include <cstdio>#include <vector>#include <string>#include <queue>#include <stack>#include <cmath>#include <set>#include <map>using namespace std;typedef long long LL;#define mem(a, n) memset(a, n, sizeof(a))#define ALL(v) v.begin(), v.end()#define si(a) scanf("%d", &a)#define sii(a, b) scanf("%d%d", &a, &b)#define siii(a, b, c) scanf("%d%d%d", &a, &b, &c)#define pb push_back#define eps 1e-8const int inf = 0x3f3f3f3f, N = 1e3 + 5, MOD = 1e9 + 7;int T, cas = 0;int n, m;int dp[105];char s[N];#define LOCALint main(){#ifdef LOCAL freopen("/Users/apple/input.txt", "r", stdin);// freopen("/Users/apple/out.txt", "w", stdout);#endif while(scanf("%s", s) != EOF) { int len = strlen(s); mem(dp, -1); int ul = -1, ur = -1, l = -1, ans = 0; for(int r = 0; r < len; r ++) { int index = dp[s[r]] + 1; dp[s[r]] = r; l = max(l, index); if(r - l + 1 > ans) { ans = r - l + 1; ul = l, ur = r; } } printf("[%d, %d]\n", ul, ur); for(int i = ul; i <= ur; i ++) putchar(s[i]); puts(""); } return 0;}
0 0
- 求字符串最长连续不重复的字串
- 求字符串的最长不重复字串
- 求字符串的最长不重复字串
- 求两个字符串的最长公共字串(连续)
- 求一个字串中最长的连续字符串
- 求一个字符串的最长重复字串问题
- 求字符串中重复出现的最长字串
- 用后缀数组 求一个字符串的最长重复字串
- 实现用后缀数组求字符串的最长重复字串
- 求不重复最长字串长度
- 求两个字符串的不连续的公共字串
- 网上有些例子有问题,所以重新写了下 求字符串的最长不重复字串
- 求最长不重复字符串
- KMP求最长连续重复字串——POJ 1961
- 最长不重复字串
- 求一个字符串中最长连续字串及其长度
- 求字符串中最长连续递增子数字串
- 求最长连续字串问题
- Android 2D 绘图
- linux学习书籍和路线推荐
- iOS图文混排的简易实现
- scala语法 基础3
- 欢迎使用CSDN-markdown编辑器
- 求字符串最长连续不重复的字串
- win7升级Win10之360百度等升级助手均因系统未激活不可升级
- maven依赖的全局排除
- 软件工程专业开始学习嵌入式在STC89C52RC/AT89S52和标准8051单片机的一些疑惑
- 防Ddos文献之敌情篇-DDoS攻击原理
- android sqlite讲解(一)
- 集合Map
- 牛人的linux学习四部曲
- 关于XML的验证(DTD与XSD)一点实践