ቁምፊዎችን ሳይደግሙ ረዥሙ ንዑስ ገመድ  


የችግር ደረጃ መካከለኛ
ውስጥ በተደጋጋሚ ተጠየቀ የ Adobe የመርጨት አማዞን ፓም ብሉምበርግ ByteDance Cisco eBay Expedia ፌስቡክ ጎልድማን ሳክስ google የ Microsoft ሞርጋን ስታንሊ በ Oracle SAP የ SAP ላብራቶሪዎች Spotify በ Uber VMware ያሁ
ሃሽ ሃምሽንግ የተንሸራታች መስኮት ሕብረቁምፊ ሁለት ጠቋሚ

የተሰጠው ሀ ክር, ቁምፊዎችን ሳይደግሙ ረዥሙን የዝርፊያውን ርዝመት መፈለግ አለብን.

እስቲ ጥቂት ምሳሌዎችን እንመልከት-

ለምሳሌ  

pwwkew
3

ማብራሪያ-መልስ ከ 3 ርዝመት ጋር “wke” ነው

aav
2

ማብራሪያ-መልስ “av” ነው ከርዝመት 2 ጋር

አቀራረብ -1 ለ ቁምፊዎችን ሳይደግሙ ረዥሙ ንዑስ ገመድ   

የደስታ ኃይል 

ለተባዙ ገጸ-ባህሪዎች ሁሉንም መተኪያዎችን መፈተሽ አንድ አንድ ይሁኑ

  • የጊዜ ውስብስብነት
    • የሚፈጠሩትን የሕብረቁምፊዎች ብዛት = n * (n + 1) / 2
    • እያንዳንዱን ሕብረቁምፊ ለመፈተሽ ጊዜ ተወስዷል = O (n)
    • ስለዚህ የጊዜ ውስብስብነት = ኦ (n ^ 3)
  • የቦታ ውስብስብነት
    • ልዩነቱን ለማጣራት የተከሰቱ ገጸ-ባህሪያትን ማከማቸት = n
    • ስለዚህ የቦታ ውስብስብነት = ኦ (n)

አቀራረብ -2 ለ ቁምፊዎችን ሳይደግሙ ረዥሙ ንዑስ ገመድ   

የተንሸራታች መስኮት 

እኛ አሁን ዱካውን እንቀጥላለን ከፍተኛ ርዝመት ማጠፊያ ጋር ምንም ተደጋጋሚ ገጸ-ባህሪያት የሉም ፡፡

  • ከፍተኛው ይሁን
  • እምም ርዝመት ይሁን ከፍተኛ በ 0 የመጀመሪያ የተደረገበት
  • ያንን እናረጋግጣለን  i ወደ j-xNUMX ቀድሞውንም ምልክት ተደርጎበታል
  • እኛ አንድ jth ቁምፊ ባጋጠመን ቁጥር
    • S [j] ካልተደገመ
      • በመጠምዘዣው ላይ ሊታከል ይችላል
      • የመተላለፊያ መስመሩ ርዝመት ሊጨምር ይችላል
      • j ሊጨምር ይችላል
      • s [j] በ HashSet ውስጥ ሊቀዳ / ሊታከል ይችላል
    • S [j] ከተደገመ
      • ቁምፊዎችን እናስወግዳለን
      • መነሻው ማለትም መለወጥ አለብኝ
      • የማጣበቂያው መደጋገም ነፃ እስኪሆን ድረስ ይህን እናደርጋለን

የጃቫ ፕሮግራም

import java.util.*;
class Solution 
{
    public int lengthOfLongestSubstring(String s)
    {
        int max=0;
        HashSet<Character>hash=new HashSet<Character>();
        int i=0;
        int j=0;
        while(i<s.length() && j<s.length())
        {
            if(hash.contains(s.charAt(j)))
            {
                hash.remove(s.charAt(i));
                i=i+1;
            }
            else
            {
             hash.add(s.charAt(j));
             j=j+1;
             max=Math.max(j-i,max);   
            }
        }
        return max;
    }
}

class Main{
  public static void main(String[] args){
    int answer = (new Solution()).lengthOfLongestSubstring("pwwkew");
    System.out.print(answer);
  }
}
pwwkew
3

C ++ ፕሮግራም

class Solution 
{
public:
    int maxs(int a,int b)
    {
        if(a>b)
            return a;
        else
            return b;
    }
public:
    int lengthOfLongestSubstring(string s) 
    {
    int max=0;
    set<char>hash;
    int i=0;
    int j=0;
    while(i<s.length() && j<s.length())
    {
      if(hash.count(s[j]))
      {
                hash.erase(s[i]);
                i=i+1;
      }
      else
     {
     hash.insert(s[j]);
     j=j+1;
     max=maxs(j-i,max);   
     }
    }
    return max;    
    }
};
pwwkew
3

ውስብስብነት ትንተና

የጊዜ ውስብስብነትኦ (n)

ተመልከት
በተደረደሩ በተዞረ ድርድር ውስጥ ይፈልጉ

የቦታ ውስብስብነትO (k) የተንሸራታች መስኮቱ መጠን k በሚሆንበት ቦታ

አቀራረብ -3 ለ ቁምፊዎችን ሳይደግሙ ረዥሙ ንዑስ ገመድ   

የተመቻቸ ተንሸራታች መስኮት 

ከላይ በተጠቀሰው አቀራረብ ተደጋጋሚ ገጸ-ባህሪን እስክንገናኝ ድረስ ቁምፊዎችን ማስወገድ እና የሕብረቁምፊውን ጅምር መለወጥ እንቀጥላለን።

የመድገም_ባህሪውን የመጨረሻ ክስተት ለማቆየት ሀሽማፕ ጥቅም ላይ ሊውል ይችላል እና እኔ (የመለወጫ ጅማሬ) ወደዚያ ነጥብ ሊዛወር ይችላል ፡፡

የጃቫ ፕሮግራም

import java.util.*;
class Solution 
{
    public int lengthOfLongestSubstring(String s)
    {
        int max=0;
        HashMap<Character,Integer>hash=new HashMap<Character,Integer>();
        int i=0;
        int j=0;
        while(j<s.length())
        {
            if(hash.containsKey(s.charAt(j)))
            {
                i=Math.max(hash.get(s.charAt(j)),i);
            }
             hash.put(s.charAt(j),j+1);
             max=Math.max(j-i+1,max); 
             j=j+1;
        }
        return max;
    }
}

class Main{
  public static void main(String[] args){
    int answer = (new Solution()).lengthOfLongestSubstring("abcdefg");
    System.out.print(answer);
  }
}
abcdefg
7

C ++ ፕሮግራም

class Solution 
{
public:
    int maxs(int a,int b)
    {
        if(a>b)
            return a;
        else
            return b;
    }
public:
    int lengthOfLongestSubstring(string s) 
    {
    int max=0;
    map<char,int>hash;
    int i=0;
    int j=0;
    while(j<s.length())
    {
    if(hash.count(s[j]))
    {
    i=maxs(hash[s[j]],i);
    }
    hash[s[j]]=j+1;
    max=maxs(j-i+1,max); 
    j=j+1;
    }
    return max;
    }
};
aabbccddee
2

ውስብስብነት ትንተና

የጊዜ ውስብስብነት: O (n)

የቦታ ውስብስብነት: - O (k) የሚንሸራተተው መስኮት መጠን ያለው

ማጣቀሻዎች