Skip to content
Programmingoneonone
Programmingoneonone
  • CS Subjects
    • Internet of Things (IoT)
    • Digital Communication
    • Human Values
    • Cybersecurity
  • Programming Tutorials
    • C Programming
    • Data structures and Algorithms
    • 100+ Java Programs
    • 100+ C Programs
  • HackerRank Solutions
    • HackerRank Algorithms Solutions
    • HackerRank C problems solutions
    • HackerRank C++ problems solutions
    • HackerRank Java problems solutions
    • HackerRank Python problems solutions
Programmingoneonone
Programmingoneonone

HackerRank Beautiful Strings problem solution

YASH PAL, 31 July 202425 January 2026

In this HackerRank Beautiful Strings problem solution, we have given a string S consisting of lowercase English letters. a string is beautiful with respect to S if it can be derived from S by removing exactly 2 characters. and we need to find and print the number of different strings that are beautiful with respect to S.

HackerRank Beautiful Strings problem solution

HackerRank Beautiful Strings problem solution in Python.

import itertools
s = input()
groups = [(c, sum(1 for x in l)) for c, l in itertools.groupby(s)]
multiple = sum(x[1] > 1 for x in groups)
fence = sum(groups[i - 1][0] == groups[i + 1][0] and groups[i][1] == 1 
            for i in range(1, len(groups) - 1))
print(multiple + len(groups) * (len(groups) - 1) // 2 - fence)

Problem solution in Java.

import java.io.*;

public class Solution {
    
  static long beautifulStrings(char[] s) {
      long result = 0;
      int res[] = new int[s.length];
      for (int j = s.length-1; j > 0; j--) {
          res[j-1] = res[j];
          if ((j > 1) && (s[j] == s[j-1])) {
              continue;
          }
          res[j-1]++;
          result++;
      }
      for (int i = 1; i < s.length-1; i++) {
          if (s[i] == s[i-1]) {
              continue;
          }
          if (s[i+1] != s[i-1]) {
            result++;
          }
          result += res[i+1];
      }
      return result;
  }

  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
    char[] s = br.readLine().toCharArray();

    long result = beautifulStrings(s);
    bw.write(String.valueOf(result));
    bw.newLine();

    bw.close();
    br.close();
  }
}

Beautiful Strings problem solution in C++.

#include <bits/stdc++.h>

#define pb push_back
#define pp pop_back
#define f first
#define s second
#define mp make_pair
#define sz(a) int((a).size())
#ifdef _WIN32
#  define I64 "%I64d"
#else
#  define I64 "%lld"
#endif
#define fname "."

typedef long long ll;
typedef unsigned long long ull;

const int MAX_N = (int)1e5 + 123;
const double eps = 1e-6;
const int inf = (int)1e9 + 123;

using namespace std;

string s;
ll ans;

ll slow() {
	set < string > q;
	for (int i = 0; i < sz(s); i++)
		for (int j = i + 1; j < sz(s); j++) {
			string nw = "";
			for (int k = 0; k < sz(s); k++)
				if (k != i && k != j)
					nw += s[k];
			q.insert(nw);
		}
	return sz(q);
}

int main() {
	#ifdef Nick
	freopen(fname"in","r",stdin);
	freopen(fname"out","w",stdout);
	#endif
	cin >> s;
	for (int i = 1, len = 1, cnt = 1; i <= sz(s); i++) {
		if (i == sz(s) || s[i] != s[i - 1]) {
			ans += (cnt - 1) + (len > 1);
			len = 1;
			cnt++;
		}
		else
			len++;
	}	
	for (int i = 0; i + 1 < sz(s); ) {
		if (s[i] == s[i + 1]) {
			i++;
			continue;
		}
		int len = 2;
		while(i + len < sz(s) && s[i + len] == s[i + (len % 2)])
			len++;
		ans -= (len - 2);
		i += len - 1;
	}
	cout << ans;
	return 0;
}

Problem solution in C.

#include <assert.h>
#include <limits.h>
#include <math.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* readline();

/*
 * Complete the beautifulStrings function below.
 */
long beautifulStrings(char* s) {
    /*
     * Write your code here.
     */
    int a,f,x=0,i,j;
    f=strlen(s);
    a=(f*(f-1))/2;
    for(i=0;i<f;i++){
        for(j=i+1;j<f;j++){
            if(s[i]==s[j]){
                x++;
            }
        }

    }
    return a-x;
}

int main()
{
    FILE* fptr = fopen(getenv("OUTPUT_PATH"), "w");

    char* s = readline();

    long result = beautifulStrings(s);

    fprintf(fptr, "%ldn", result);

    fclose(fptr);

    return 0;
}

char* readline() {
    size_t alloc_length = 1024;
    size_t data_length = 0;
    char* data = malloc(alloc_length);

    while (true) {
        char* cursor = data + data_length;
        char* line = fgets(cursor, alloc_length - data_length, stdin);

        if (!line) { break; }

        data_length += strlen(cursor);

        if (data_length < alloc_length - 1 || data[data_length - 1] == 'n') { break; }

        size_t new_length = alloc_length << 1;
        data = realloc(data, new_length);

        if (!data) { break; }

        alloc_length = new_length;
    }

    if (data[data_length - 1] == 'n') {
        data[data_length - 1] = '';
    }

    data = realloc(data, data_length);

    return data;
}

Algorithms coding problems solutions AlgorithmsHackerRank

Post navigation

Previous post
Next post

Are you a student and stuck with your career or worried about real-time things, and don't know how to manage your learning phase? Which profession to choose? and how to learn new things according to your goal, and land a dream job. Then this might help to you.

Hi My name is YASH PAL, founder of this Blog and a Senior Software engineer with 5+ years of Industry experience. I personally helped 40+ students to make a clear goal in their professional lives. Just book a one-on-one personal call with me for 30 minutes for 300 Rupees. Ask all your doubts and questions related to your career to set a clear roadmap for your professional life.

Book session - https://wa.me/qr/JQ2LAS7AASE2M1

Pages

  • About US
  • Contact US
  • Privacy Policy

Follow US

  • YouTube
  • LinkedIn
  • Facebook
  • Pinterest
  • Instagram
©2026 Programmingoneonone | WordPress Theme by SuperbThemes