# Holiday Season | Hackerearth Solution

Problem:-

It's a holiday season for all school students around the world! Unfortunately, Mahamba is busy preparing for International Olympiad in Informatics, which will be held in Tehran, Iran. He is now facing a new challenge from his teacher Aceka, and it goes something like this:

You have a string x of length N, which consists of small English letters. You have to find the number of indexes abc and d, such that $1<=a and ${x}_{a}=={x}_{c}$, as well as ${x}_{b}=={x}_{d}$.

He is baffled and definitely needs some help. So, you, the best programmer in Lalalandia, decided to give him a hand!

Input format

The first line contains the number N - the length of a string x. The second line contains the string x itself.

Output format

The first and only line should contain the answer to the problem.

Constraints

$1<=N<=2000$

The string x only contains small English letters.

Sample Input
5
ababa
Sample Output
2
Time Limit: 2
Memory Limit: 256
Source Limit:
Explanation

There are only 2 variants: (a=1,b=2,c=3,d=4) and (a=2,b=3,c=4,d=5)

Code:-

Solution 1 ( C language):-

#include<stdio.h>
#define ll long long int
int main(){
ll n,count=0,j=0;
scanf("%lld",&n);
char str[n];
scanf("%s",str);
ll alpha[26]={0};
for(int i=0;i<n;i++){
ll c=0;
for(j=i+1;j<n;j++){
if(str[i]==str[j]){
count += c;
}
c += alpha[str[j]-'a'];
}
alpha[str[i]-'a']++;

}
printf("%ld",count);
return 0;
}

Solution 2 ( C++ language):-

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define deb(x) cout << #x << " = " << x << endl;
void getRes()
{
ll n; cin>>n;
string s; cin>>s;
ll alpha[26] = {0}, ans = 0;
for(int i = 0; i < n; i++)
{
ll c = 0;
for(int j = i+1; j < n; j++)
{
if(s[i] == s[j])
{
ans += c;
}
c += alpha[s[j] - 'a'];
}
alpha[s[i] - 'a']++;
}
cout<<ans<<endl;
}
int main()
{
int testCases = 1;
// cin>>testCases;
while (testCases-- > 0)
{
getRes();
}
return 0;
}

Solution 3 (java language):-

import java.util.*;
class TestClass {
public static void main(String args[] ) throws Exception {
int[] count = new int[26];
long ans = 0;
for(int i=0; i<n; i++){
int curr = 0;
for(int j=i+1; j<n; j++){
if(s[i]==s[j]){
ans += curr;
}
curr += count[s[j]-'a'];
}
count[s[i]-'a']++;
}
System.out.println(ans);
}
}

keywords:-

divide the digits hackerearth solution,alice and strings hackerearth solution,breaking a string hackerearth solution,hackerearth string problems,interesting sum hackerearth solution,
counting frog paths hackerearth solution,popular shop problem hackerearth,policemen and thieves hackerearth solutions,

Recommended Post:-