题链:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
题意:求没有重复数的最长连续子序列。
思路:
dp[i]表示以i为结尾的最长子序列的首位置下标
转移方程:
dp[i]=max(dp[i-1],pre[a[i]]+1)
初值:
dp[0]=0
pre[a[0]]=0
pre[other]=-1
const int N = 5e4+10;
int dp[N];
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int n=s.size();
if(n==0) return 0;
int pre[510]={0};
for(int i=0;i<510;i++) pre[i]=-1;
dp[0]=0;
pre[s[0]]=0;
int ans=1;
for(int i=1;i<n;i++){
dp[i]=max(pre[s[i]]+1,dp[i-1]);
ans=max(ans,i-dp[i]+1);
pre[s[i]]=i;
}
return ans;
}
};