İkincisini, tez-tez xarakterini tapın

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Bir simli nəzərə alaraq, ikinci ən tez-tez olan simvolu tapacaq bir funksiya yazın

misal

GİRİŞ:
s = "aabbbc"

Çıxış:
'a' ikinci ən çox görülən xarakterdir

Zaman Mürəkkəbliyi: O (n)

Alqoritm

1. Giriş sətrini skan edin və giriş sətrindən bir simvol sayını düzəldin
yəni yuxarıdakı nümunədə,
a-nın sayı 2-dir, buna görə də ['a'] = 2-yə sayın
b-nin sayı 3-dür, buna görə də ['b'] = 3 sayın
c-nin sayı 1-dir, beləliklə sayın ['c'] = 1

2. İndi sayma massivindəki ikinci ən böyük dəyəri tapın

C ++ Proqramı

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

void secondFreqChar(string s)
{
	int count[NO_OF_CHARS] = {}; 
	for(int i=0; i<s.size(); i++)
	{
		count[s[i]]++; //increment the count of each character by using ASCII of character as key	
	}
	//Finding the second largest number in count array
	int first = 0, second =0;
	for(int i=0; i < NO_OF_CHARS; i++)
	{
		//If the current char count is less than first, then change both variables
		if(count[i] > count[first]) //
		{
			second = first;
			first = i;
		}
		//If it is inbetween first and second
		else if(count[i] > count[second] && count[i] != count[first])
		{
			second = i;
		}
	}
	if (second != '\0')
	{
		cout<<"second most frequent character is "<<char(second)<<endl;	
	}
	else//if there is no second frequent character
	{
		cout<<"there is no second most frequent character"<<endl;
	}
	
}
int main()
{
	string s  = "tut";
	cout<<"Input string is "<<s<<endl;
	secondFreqChar(s);
}

Yoxla

 

Crack Sistemi Dizayn Müsahibələri
Translate »