ٻن برابر ڪردارن جي وچ ۾ وڏو ڀروسو ليوٽ ڪوڊ حل


تڪليف جي سطح آسان
اسٽرنگ

مسئلو ٻن وڏن اکرن جي وچ ۾ سڀ کان وڏو سبسٽ ليٽ ڪوڊ حل ، اسان کان پڇي ٿو ته سڀ کان وڏي سبسٽنگ جي ڊيگهه. هتي ، هڪ شرط سبسٽرنگ تي لاڳو ٿيل آهي. ماتحت ساڳيو اکرن جي وچ ۾ ھئڻ گھرجي. .، جملو گهٽ ۾ گهٽ ٻن برابر ڪردارن تي مشتمل هجڻ گهرجي ، اهي محصول ٿئي ٿي جيئن هڪ قدرتي نمبر ٻئي -1 موٽجي وڃي. پر حل سان اڳتي وڌڻ کان اڳ اچو ته ڪجھ مثالن تي نظر وجهون.

ٻن برابر ڪردارن جي وچ ۾ وڏو ڀروسو ليوٽ ڪوڊ حل

s = "aa"
0

وضاحت: ان پٽ ۾ ٻه الف هوندا آهن ۽ انهن جي وچ ۾ تار لڳاتار رڪاوٽ لڳندي آهي جيڪي لاڳو ٿيل حالتن کي مطمئن ڪندا آهن. ان ڪري ، ٻاھر صحيح آھي.

s = "abca"
2

وضاحت: اتي فقط هڪ واحد ڪردار آهي ، جنهن ۾ انٽ اسٽرنگ ۾ گهٽ ۾ گهٽ ٻه مثال موجود آهن. تنهنڪري ، وڌ کان وڌ پيداوار “بي سي” تي مشتمل هوندي.

ٻه برابر ڪردارن جي وچ ۾ وڏي ڀروسي جو رستو ليٽ ڪوڊ حل

مسئلي جو حل ٻن برابر ڪردارن جي وچ ۾ وڏي سبسٽسٽنگ ليٽ ڪوڊ جو حل آسان آهي. مسئلو ۾ ، اسان کي صرف سڀ کان وڏي سارنگ جي ڊيگهه ڳولڻ لاءِ چيو ويو آهي پر اهو ڪم پاڻ نه آهي. تنهن ڪري ، اسان بس ٻه ارٽون ٺاهيون ٿا جيڪي ڪنهن به ڪردار جي پهرين ۽ آخري انڊيڪس کي اسٽور ڪن ٿا. شروعات ۾ ، اسان اهي آيريون ڀريندا آهيون -1 جنهن جي ڪري ڪردار جي ڪنهن واقعن جي نشاندهي نه ٿي آهي. هڪ دفعو اسين هڪ ڪردار ڳوليون ٿا اسان انڊيڪس کي پهرين صف ۾ ذخيرو ڪريون ٿا جيڪڏهن اها -1 سان ڀريل هجي. جيڪڏهن اهو نه آهي - 1 ، اسان ٻئين صف ۾ انڊيڪس ذخيرو ڪريون ٿا.

هنن ٻن ارڪن کي استعمال ڪندي ، اسان وڌ کان وڌ ڊيگهه ڳوليندا آهيون. اسان 0 کان شروع ٿيندڙ هڪ لوپ هلون ٿا جئين 25 تائين ٻنهي سرڪٽ جي سڀني انڊيڪس کي چڪاس ڪريو. اسان جيڪڏهن خبرون صحيح آهن ته هر تعريف ۾ جواب کي تازو ڪندا آهيون. آخر ۾ ، اسان جواب واپس آڻينداسين.

ٻه برابر ڪردارن جي وچ ۾ وڏي ڀروسي لاءِ ڪوڊ ليٽ ڪوڊ حل

سي ++ ڪوڊ

#include <bits/stdc++.h>
using namespace std;

int maxLengthBetweenEqualCharacters(string s) {
    vector<int> f1(26, -1), f2(26, -1);
    int n = s.size();
    for(int i=0;i<n;i++){
        if(f1[s[i]-'a'] == -1)
            f1[s[i]-'a'] = i;
        else
            f2[s[i]-'a'] = i;
    }

    int ans = -1;
    for(int i=0;i<26;i++)
        if(f2[i] != -1)
            ans = max(ans, f2[i]-f1[i]-1);
    return ans;
}

int main(){
    cout<<maxLengthBetweenEqualCharacters("aa");
}
0

جاوا ڪوڊ

import java.util.*;
import java.lang.*;
import java.io.*;

class Main
{
  public static int maxLengthBetweenEqualCharacters(String s) {
        int[] f1 = new int[26];
        int[] f2 = new int[26];
        for(int i=0;i<26;i++){
            f1[i] = -1;
            f2[i] = -1;
        }
        int n = s.length();
        for(int i=0;i<n;i++){
            if(f1[s.charAt(i)-'a'] == -1)
                f1[s.charAt(i)-'a'] = i;
            else
                f2[s.charAt(i)-'a'] = i;
        }
        
        int ans = -1;
        for(int i=0;i<26;i++)
            if(f2[i] != -1)
                ans = Math.max(ans, f2[i]-f1[i]-1);
        return ans;
    }
    
  public static void main (String[] args) throws java.lang.Exception
  {
    String s = "aa";
    System.out.print(maxLengthBetweenEqualCharacters(s));
  }
}
0

پيچيدگي تجزيي

وقت جي پيچيدگي

اي (اين) ، ڇاڪاڻ ته پوري ان پٽنگ واري تار کي ڇڪي ٿو.

خلائي پيچيدگي

اي (1) ، ڇاڪاڻ ته اسان مسلسل ماپ واريون توريون استعمال ڪيون آهن.