Minimum simvolları silin ki, iki simli anagram olsun

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Amazon Pulsuz yükləmə
Anaqram SimBaxılıb 533

Problem bəyanat

Ildə “Minimum Simvolları Silin ki, İki Strings Anagrams ol ”probleminə iki giriş sətri verdik. Bu iki sətirdən çıxarılan minimum simvol sayını tapın anaqramlar.

Giriş Formatı

"S" simli olan ilk sətir.

"T" simli olan ikinci sətir.

Çıxış formatı

Bu iki sətirdən çıxarılacaq simvolların minimum_sayısını əks etdirən bir tam ədədi n çap edin anaqramlar.

Məhdudiyyətlər

  • 1 <= | s |, | t | <= 10 ^ 6
  • s [i], t [j], İngilis əlifbası kiçik olmalıdır ki, burada i, j ith, s, t-də j mövqedə işarəni təmsil etsin.

misal

hfgba
bgja
3

Explanation:  Burada “s” sətrindən h, f, “t” sətrindən j silin. Beləliklə, hər iki simli bərabərləşdirmək üçün 3 simvol çıxardıq.

Alqoritm

1. Hər iki giriş sətrini keçin.

2. String1-də simvol sayını arr1 count2-də və string2-də simvol sayını array countXNUMX-də saxlayın.

3. Traverse sayma massivləri, nəticədə silinəcək simvolların sayı. (nəticəni başladın = 0)

4. Bütün simvollar üçün nəticələrə tezliklərdə fərq əlavə edin, nəticə = nəticə + abs (count1 [i] - count2 [i]).

5. Son nəticəni qaytarın.

Həyata keçirilməsi

Minimum simvolları silmək üçün C ++ proqramı ki, iki simli anagram olsun

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

int main()
{
    string s,t;
    cin>>s>>t;
    int count1[26], count2[26];
    memset(count1,0,sizeof(count1));
    memset(count2,0,sizeof(count2));
    for (int i=0; i<s.length(); i++)
    {
        count1[s[i]-'a']++;
    }
    for (int i=0; i<t.length(); i++)
    {
        count2[t[i]-'a']++;
    }
    int ans=0;
    for(int i=0;i<26; i++)
    {
        ans+=abs(count1[i]-count2[i]);
    }
    cout<<ans<<endl;
    return 0;
}

Minimum simvolları silmək üçün Java Proqramı, İki Sətrin Anagrama çevrilməsi

import static java.lang.Math.abs;
import java.util.Scanner;

class sum
{ 
  public static void main(String[] args) 
  { 
    Scanner sr = new Scanner(System.in); 
                String s = sr.next();
                String t = sr.next();
                int count1[] = new int[26];
                int count2[] = new int[26];
                for(int i=0; i<26; i++)
                {
                    count1[i]=0;
                    count2[i]=0;
                }
                for (int i=0; i<s.length(); i++)
                {
                    count1[s.charAt(i)-'a']++;
                }
                for (int i=0; i<t.length(); i++)
                {
                    count2[t.charAt(i)-'a']++;
                }
                int ans=0;
                for(int i=0;i<26; i++)
                {
                    ans+=abs(count1[i]-count2[i]);
                }
                System.out.println(ans);
  } 
} 
tutorialcupisgoodplaceforlearning
youcanpracticeasmuchasyoucan
27

Minimum Simvolları Silmək üçün Mürəkkəblik Təhlili, İki Sətrin Anagrama çevrilməsi

Zamanın mürəkkəbliyi

O (n) hara n s, t uzunluğunun maksimumudur. Burada bütün simli keçirik və hər bir simvolda xətti vaxt alan hər bir simvolun tezliyini hesablayırıq. Sonra frekanslardakı fərqi nəticəyə əlavə edin.

Kosmik Mürəkkəblik

O (1) çünki burada yalnız n ölçüsü böyük olduqda çox kiçik olan 26 ölçülü iki sıra istifadə edirik. Beləliklə, kosmik mürəkkəbliyin burada sabit olduğunu deyə bilərik.

Translate »