劍指 Offer 48. 最長不含重複字符的子字符串

2020-07-03

1.題目描述

請從字符串中找出一個最長的不包含重複字符的子字符串,計算該最長子字符串的長度。

2.題解


3.代碼

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int len=s.size();
        if (!len) return 0;
        int f[128];
        memset(f,0xff,sizeof(f));
        int tmp=0,res=0;
        for (int i=0;i<len;i++){
            if (i-f[s[i]]>tmp) tmp=tmp+1;
            else tmp=i-f[s[i]]; 
            res=max(tmp,res);
            f[s[i]]=i;
        }
        return res;
    }
};
class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int len=s.size();
        if (!len) return 0;
        int f[128];
        memset(f,0xff,sizeof(f));
        int i=-1,res=0;
        for (int j=0;j<len;j++){
            if (f[s[j]]!=-1){
                i=max(i,f[s[j]]);
            }
            res=max(res,j-i);
            f[s[j]]=j;
        }
        return res;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章