c++算法练习

c++算法练习

904.水果成篮

力扣:水果成篮

class Solution {
public:
    int totalFruit(vector<int>& fruits) {
        int l=0,ret=0;
        unordered_set<int> hs;//哈希表
        for(int r=0;r<fruits.size();r++)
        {
            if(hs.find(fruits[r])==hs.end())
            hs.insert(fruits[r]);
            int r1=r;
            while(hs.size()>2)//改变窗口
            {
                r1--;
                if(fruits[r1]!=fruits[r-1])
                {hs.erase(fruits[r1]);l=r1+1;}
            } 
            ret=max(ret,r-l+1);
        }
        return ret;
    }
};

2730.找到最长的半重复子字符串

找到最长的半重复子字符串

class Solution {
public:
    int longestSemiRepetitiveSubstring(string s) {
      int f=0,ret=0,l=0;
      for(int r=0;s[r];r++)
      {
        if(r&&s[r]==s[r-1])f++;
        while(f==2)
        {
            l++;
            if(s[l]==s[l-1])
            {
                f=1;break;
            }
        }
        ret=max(ret,r-l+1);
      }  
      return ret;
    }
};
posted @ 2024-12-24 21:38  悟屈  阅读(14)  评论(0)    收藏  举报