Artikelverzeichnis
Problembeschreibung
Suchen Sie den längsten Teilstring, ohne die Zeichen aus der Zeichenfolge zu wiederholen, und berechnen Sie die Länge des längsten Teilstrings.
Problemlösungsbericht
bedeutet
Die Länge des längsten Teilstrings, der mit Zeichen endet.
Denken Sie daran
Die Ausgangsposition ist
suchen
:
- Rückwärtsfahrt ,
- Wenn es nicht existiert , die , bleibt unverändert;
- Wenn es existiert , die , währenddessen aktualisiert 。
Zeitliche Komplexität: Am besten ist es
, das Schlimmste ist
Raumkomplexität:
Implementierungscode
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int n=s.size(),ans=1,flag=0,i,j,p=0;
if(n==0) return 0;
vector<int>dp(n,1);
for(i=1;i<n;i++){
for(j=i-1;j>=p;j--){
if(s[i]==s[j]){
flag=1;
break;
}
}
if(!flag)
dp[i]=dp[i-1]+1;
else{
dp[i]=i-j;
p=j;
flag=0;
}
ans=max(ans,dp[i]);
}
return ans;
}
};
Referenzen
[1] Leetcode Interview Frage 48. Die längste Teilzeichenfolge ohne wiederholte Zeichen