Eliminar caracteres de una String que aparece exactamente K veces

Dada una string de letras minúsculas str de longitud N , la tarea es reducirla eliminando los caracteres que aparecen exactamente K veces en la string.
Ejemplos: 
 

Entrada: str = “geeksforgeeks”, K = 2 
Salida: eeforee
Entrada: str = “geeksforgeeks”, K = 4 
Salida: gksforgks 
 

Acercarse: 
 

  • Cree una tabla hash de tamaño 26 , donde el índice 0 representa ‘a’ y el índice 1 representa ‘b’ y así sucesivamente.
  • Inicialice la tabla hash a cero.
  • Iterar a través de la string e incrementar la frecuencia de cada carácter ( s[i] ) en la tabla hash
  • Ahora, una vez más, recorra la string y agregue los caracteres, con la frecuencia K, en la nueva string.

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

C++

// C++ program to remove characters from
// a String that appears exactly K times
 
#include <bits/stdc++.h>
using namespace std;
 
const int MAX_CHAR = 26;
 
// Function to reduce the string by
// removing the characters which
// appears exactly k times
string removeChars(char arr[], int k)
{
    // Hash table initialised to 0
    int hash[MAX_CHAR] = { 0 };
 
    // Increment the frequency
    // of the character
    int n = strlen(arr);
    for (int i = 0; i < n; ++i)
        hash[arr[i] - 'a']++;
 
    // To store answer
    string ans = "";
 
    // Next index in reduced string
    int index = 0;
    for (int i = 0; i < n; ++i) {
 
        // Append the characters which
        // appears exactly k times
        if (hash[arr[i] - 'a'] != k) {
            ans += arr[i];
        }
    }
 
    return ans;
}
 
// Driver code
int main()
{
    char str[] = "geeksforgeeks";
    int k = 2;
 
    // Function call
    cout << removeChars(str, k);
 
    return 0;
}

Java

// Java program to remove characters from
// a String that appears exactly K times
import java.util.*;
 
class GFG{
  
static int MAX_CHAR = 26;
  
// Function to reduce the String by
// removing the characters which
// appears exactly k times
static String removeChars(char arr[], int k)
{
    // Hash table initialised to 0
    int []hash = new int[MAX_CHAR];
  
    // Increment the frequency
    // of the character
    int n = arr.length;
    for (int i = 0; i < n; ++i)
        hash[arr[i] - 'a']++;
  
    // To store answer
    String ans = "";
 
    for (int i = 0; i < n; ++i) {
  
        // Append the characters which
        // appears exactly k times
        if (hash[arr[i] - 'a'] != k) {
            ans += arr[i];
        }
    }
  
    return ans;
}
  
// Driver code
public static void main(String[] args)
{
    char str[] = "geeksforgeeks".toCharArray();
    int k = 2;
  
    // Function call
    System.out.print(removeChars(str, k));
}
}
 
// This code is contributed by 29AjayKumar

Python3

# Python 3 program to remove characters from
# a String that appears exactly K times
 
MAX_CHAR = 26
 
# Function to reduce the string by
# removing the characters which
# appears exactly k times
def removeChars(arr, k):
 
    # Hash table initialised to 0
    hash = [0]*MAX_CHAR
 
    # Increment the frequency
    # of the character
    n = len(arr)
    for i in range( n):
        hash[ord(arr[i]) - ord('a')] += 1
 
    # To store answer
    ans = ""
 
    # Next index in reduced string
    index = 0
    for i in range(n):
 
        # Append the characters which
        # appears exactly k times
        if (hash[ord(arr[i]) - ord('a')] != k):
            ans += arr[i]
         
    return ans
 
# Driver code
if __name__ =="__main__":
    str = "geeksforgeeks"
    k = 2
 
    # Function call
    print(removeChars(str, k))
 
# This code is contributed by chitranayal

C#

// C# program to remove characters from
// a String that appears exactly K times
using System;
 
class GFG{
   
static int MAX_CHAR = 26;
   
// Function to reduce the String by
// removing the characters which
// appears exactly k times
static String removeChars(char []arr, int k)
{
    // Hash table initialised to 0
    int []hash = new int[MAX_CHAR];
   
    // Increment the frequency
    // of the character
    int n = arr.Length;
    for (int i = 0; i < n; ++i)
        hash[arr[i] - 'a']++;
   
    // To store answer
    String ans = "";
  
    for (int i = 0; i < n; ++i) {
   
        // Append the characters which
        // appears exactly k times
        if (hash[arr[i] - 'a'] != k) {
            ans += arr[i];
        }
    }
   
    return ans;
}
   
// Driver code
public static void Main(String[] args)
{
    char []str = "geeksforgeeks".ToCharArray();
    int k = 2;
   
    // Function call
    Console.Write(removeChars(str, k));
}
}
 
// This code is contributed by 29AjayKumar

Javascript

<script>
 
// Javascript program to remove characters from
// a String that appears exactly K times
 
let MAX_CHAR = 26;
    
// Function to reduce the String by
// removing the characters which
// appears exactly k times
function removeChars(arr, k)
{
    // Hash table initialised to 0
    let hash =  Array.from({length: MAX_CHAR}, (_, i) => 0);
    
    // Increment the frequency
    // of the character
    let n = arr.length;
    for (let i = 0; i < n; ++i)
        hash[arr[i].charCodeAt() - 'a'.charCodeAt()]++;
    
    // To store answer
    let ans = "";
   
    for (let i = 0; i < n; ++i) {
    
        // Append the characters which
        // appears exactly k times
        if (hash[arr[i].charCodeAt() - 'a'.charCodeAt()] != k) {
            ans += arr[i];
        }
    }
    
    return ans;
}
       
// Driver code
     
      let str = "geeksforgeeks".split('');
    let k = 2;
    
    // Function call
    document.write(removeChars(str, k));
                                                                                 
</script>
Producción: 

eeforee

 

Complejidad de tiempo: O(N)
 

Publicación traducida automáticamente

Artículo escrito por muskan_garg 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 *