剑指 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;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_34600424/article/details/107116472