Caracteres mínimos que se reemplazarán en la string dada para que todos los caracteres sean iguales

Dada una string str de tamaño N que consta de caracteres ingleses en minúsculas, la tarea es encontrar los caracteres mínimos que se reemplazarán para que todos los caracteres de la string str sean iguales. Cualquier carácter puede ser reemplazado por cualquier otro carácter.

Ejemplo:

Entrada: str=”geeksforgeeks”
Salida: 9
Explicación: Reemplace todos los caracteres excepto ‘e’ de la string con ‘e’.

Entrada: str=”datos”
Salida: 2

 

Enfoque: El número mínimo de caracteres a reemplazar para que todos los caracteres sean iguales es básicamente el número de caracteres que no es igual al carácter más frecuente, es decir, N – (frecuencia del carácter más frecuente) . Ahora siga los pasos a continuación para resolver este problema:

  1. Almacene las frecuencias de todos los caracteres en vector freq
  2. Encuentre la frecuencia máxima mxfreq .
  3. Devuelve ( N – mxfreq) como respuesta.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the minimum characters
// to be replaced to make all characters
// of string str same
int minCost(char* word, int N)
{
    int mxfreq = 0;
    vector<int> freq(26, 0);
 
    for (int i = 0; i < strlen(word); i++) {
        freq[word[i] - 'a']++;
        mxfreq = max(mxfreq,
                     freq[word[i] - 'a']);
    }
 
    return N - mxfreq;
}
 
// Driver Code
int main()
{
    char str[] = "data";
    int N = sizeof(str) / sizeof(char);
 
    cout << minCost(str, N - 1);
    return 0;
}

Java

// Java program for the above approach
import java.io.*;
import java.lang.*;
import java.util.*;
 
class GFG {
   
// Function to find the minimum characters
// to be replaced to make all characters
// of string str same
static int minCost(String word, int N)
{
    int mxfreq = 0;
    int[] freq = new int[26];
 
    for (int i = 0; i < N; i++) {
          char ch = word.charAt(i);
        freq[ch - 'a']++;
        mxfreq = Math.max(mxfreq, freq[ch - 'a']);
    }
 
    return N - mxfreq;
}
 
    public static void main (String[] args) {
      
           String str = "data";
        int N = str.length();
        System.out.println(minCost(str, N - 1));
    }
}
 
// This code is contributed by hrithikgarg03188

Python3

# Python code for the above approach
 
# Function to find the minimum characters
# to be replaced to make all characters
# of string str same
def minCost(word, N):
    mxfreq = 0;
    freq = [0] * 26
    for i in range(len(word)):
        freq[ord(word[i]) - ord('a')] = freq[ord(word[i]) - ord('a')] + 1;
        mxfreq = max(mxfreq, freq[ord(word[i]) -  ord('a')]);
    return N - mxfreq + 1;
 
# Driver Code
str = "data";
N = len(str)
 
print(minCost(str, N - 1));
 
# This code is contributed by Saurabh Jaiswal

C#

// C# program for the above approach
using System;
class GFG
{
 
  // Function to find the minimum characters
  // to be replaced to make all characters
  // of string str same
  static int minCost(string word, int N)
  {
    int mxfreq = 0;
    int[] freq = new int[26];
 
    for (int i = 0; i < N; i++) {
      char ch = word[i];
      freq[ch - 'a']++;
      mxfreq = Math.Max(mxfreq, freq[ch - 'a']);
    }
 
    return N - mxfreq;
  }
 
  // Driver code
  public static void Main ()
  {
 
    string str = "data";
    int N = str.Length;
    Console.WriteLine(minCost(str, N - 1));
  }
}
 
// This code is contributed by Samim Hossain Mondal.

Javascript

<script>
       // JavaScript code for the above approach
 
       // Function to find the minimum characters
       // to be replaced to make all characters
       // of string str same
       function minCost(word, N) {
           let mxfreq = 0;
           let freq = new Array(26).fill(0);
           for (let i = 0; i < word.length; i++) {
               freq[word[i].charCodeAt(0) - 'a'.charCodeAt(0)] =
               freq[word[i].charCodeAt(0) - 'a'.charCodeAt(0)] + 1;
               mxfreq = Math.max(mxfreq, freq[word[i].charCodeAt(0) -
               'a'.charCodeAt(0)]);
           }
           return N - mxfreq + 1;
       }
 
       // Driver Code
 
       let str = "data";
       let N = str.length;
 
       document.write(minCost(str, N - 1));
 
        // This code is contributed by Potta Lokesh
   </script>
Producción

2

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por prophet1999 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *