Bir simvolda unikal xarakter tapın

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Amazon alma Bloomberg Facebook Goldman Sachs google microsoft Kahin Zillow
Sükut Hashing SimBaxılıb 36

In Bir simvolda unikal xarakter tapın problem, biz verdik sim yalnız kiçik hərfləri (az) ehtiva edir. İçindəki ilk təkrarlanmayan xarakteri tapmalı və indeksi yazdırmalıyıq.

belə bir xarakter yoxdursa çap -1.

Giriş Formatı

Yalnız bir sətir olan bir sətir.

Çıxış formatı

Nəticəni tam bir formatda çap edin.

Məhdudiyyətlər

  • 1 <= | s | <= 1000000
  • a <= s [i] <= z.
Example Input:
fwezfwjmevfukwejbfqegwkf
Example Output:
3

Sətirdə misilsiz xarakter tapmaq üçün izah

Karakter sayını bir massivdə saxlayın. Sonra döngəni başdan sona qədər çalıştırın və sayı 1 olan bir xarakterin olub olmadığını yoxlayın, sonra bu indeksi bizdə yazdırın və döngədən sıçrayın. Aşağıda göstərilən hər bir simvolun sayı.

a- 0, b- 1, c- 0, d- 0, e- 4, f- 5, g- 1, h- 0, i- 0, j- 2, k- 2, l- 0, m- 1, n- 0, o- 0, p- 0, q- 1, r- 0, s- 0, t- 0, u- 1, v- 1, w- 4, x- 0, y- 0, z- 1.

İndi simli əvvəldən keçirik və sayı 1 olan hər hansı bir simvolun olub olmadığını yoxlayırıq. Sonra həmin simvolun indeksini çap edib döngəni sonlandırırıq və heç bir simvol tapmasaq -1 yazdırırıq. Budur z say 1 olaraq, z olan indeksini yaz 3.

Bir simli misilsiz xarakter tapmaq üçün tətbiqetmə

/*C++ Implementation of First uique character in a string*/ 
#include<bits/stdc++.h>
using namespace std;
int main() 
{ 
    string s;
    /*take string as input*/
    cin>>s;
    int len=s.length();
    int freq[26];
    /*initalize all with 0*/
    memset(freq,0,sizeof(freq));
    for(int i=0;i<len;i++)
    {
        /*count the characters and store count of a at freq[0], count of b at freq[1], 
          count of c at freq[2],...,count of z at freq[25]*/
        freq[s[i]-'a']++;
    }
    int flag=0;
    for(int i=0;i<len;i++)
    {
        /*check the first character whose count is 1*/
        if(freq[s[i]-'a']==1)
        {
            cout<<i<<endl;
            flag=1;
            /*jump from the loop*/
            goto label;
        }
    }
    label:;
    /*if no character found as count 1 then print -1*/
    if(!flag)
    {
        cout<<-1<<endl;
    }
    return 0; 
}
Example Input 1:
dvcaewliabjvwdbgkinshckgfdbfcvd
Example Output 1:
4
Example Input 2:
aabbccdddeeefffrrrwwwqqqhhhfffihhi
Example Output 2: 
-1

Zaman mürəkkəbliyi

O (L) burada L simli uzunluqdur.

Kosmik mürəkkəblik

O (1) çünki yalnız az olan 26 ölçülü sabit bir frekans yaradırıq və kosmik mürəkkəbliyi sabit deyə bilərik.

References

Translate »