Compruebe si la frecuencia de cada carácter es igual a su posición en el alfabeto inglés

Dada la string str de alfabetos en minúsculas, la tarea es verificar si la frecuencia de cada carácter distinto en la string es igual a su posición en el alfabeto inglés. Si es válido, escriba «Sí» , de lo contrario, escriba «No» .

Ejemplos: 

Entrada: str = “abbcccdddd” 
Salida: Sí 
Explicación: 
Dado que la frecuencia de cada carácter distinto es igual a su posición en el alfabeto inglés, es decir, 
F(a) = 1, 
F(b) = 2, 
F(c) = 3, y 
F(d) = 4 
Por lo tanto, la salida es Sí.

Entrada: str = «geeksforgeeks» 
Salida: No 

Acercarse: 

  1. Almacene la frecuencia de cada carácter en una array de 26, con fines de hashing .
  2. Ahora recorra la array hash y verifique si la frecuencia de cada carácter en un índice i es igual a (i + 1) o no.
  3. En caso afirmativo, escriba «Sí» , de lo contrario, escriba «No».

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;
 
bool checkValidString(string str)
{
 
    // Initialise frequency array
    int freq[26] = { 0 };
 
    // Traverse the string
    for (int i = 0; str[i]; i++) {
 
        // Update the frequency
        freq[str[i] - 'a']++;
    }
 
    // Check for valid string
    for (int i = 0; i < 26; i++) {
 
        // If frequency is non-zero
        if (freq[i] != 0) {
 
            // If freq is not equals
            // to (i+1), then return
            // false
            if (freq[i] != i + 1) {
                return false;
            }
        }
    }
 
    // Return true;
    return true;
}
 
// Driver Code
int main()
{
 
    // Given string str
    string str = "abbcccdddd";
 
    if (checkValidString(str))
        cout << "Yes";
    else
        cout << "No";
 
    return 0;
}

Java

// Java program for the above approach
class GFG{
 
static boolean checkValidString(String str)
{
     
    // Initialise frequency array
    int freq[] = new int[26];
 
    // Traverse the String
    for(int i = 0; i < str.length(); i++)
    {
        
       // Update the frequency
       freq[str.charAt(i) - 'a']++;
    }
 
    // Check for valid String
    for(int i = 0; i < 26; i++)
    {
        
       // If frequency is non-zero
       if (freq[i] != 0)
       {
            
           // If freq is not equals
           // to (i+1), then return
           // false
           if (freq[i] != i + 1)
           {
               return false;
           }
       }
    }
     
    // Return true;
    return true;
}
 
// Driver Code
public static void main(String[] args)
{
 
    // Given String str
    String str = "abbcccdddd";
 
    if (checkValidString(str))
    {
        System.out.print("Yes");
    }
    else
    {
        System.out.print("No");
    }
}
}
 
// This code is contributed by sapnasingh4991

Python3

# Python3 program for the
# above approach
def checkValidString(str):
 
    # Initialise frequency array
    freq = [0 for i in range(26)]
 
    # Traverse the string
    for i in range(len(str)):
 
        # Update the frequency
        freq[ord(str[i]) - ord('a')] += 1
 
    # Check for valid string
    for i in range(26):
 
        # If frequency is non-zero
        if(freq[i] != 0):
 
            # If freq is not equals
            # to (i+1), then return
            # false
            if(freq[i] != i + 1):
                return False
    # Return true
    return True
 
# Driver Code
 
# Given string str
str = "abbcccdddd"
 
if(checkValidString(str)):
    print("Yes")
else:
    print("No")
 
# This code is contributed by avanitrachhadiya2155

C#

// C# program for the above approach
using System;
class GFG{
 
static bool checkValidString(String str)
{
     
    // Initialise frequency array
    int []freq = new int[26];
 
    // Traverse the String
    for(int i = 0; i < str.Length; i++)
    {
         
        // Update the frequency
        freq[str[i] - 'a']++;
    }
 
    // Check for valid String
    for(int i = 0; i < 26; i++)
    {
         
        // If frequency is non-zero
        if (freq[i] != 0)
        {
                 
            // If freq is not equals
            // to (i+1), then return
            // false
            if (freq[i] != i + 1)
            {
                return false;
            }
        }
    }
     
    // Return true;
    return true;
}
 
// Driver Code
public static void Main(String[] args)
{
 
    // Given String str
    String str = "abbcccdddd";
 
    if (checkValidString(str))
    {
        Console.Write("Yes");
    }
    else
    {
        Console.Write("No");
    }
}
}
 
// This code is contributed by sapnasingh4991

Javascript

<script>
 
// Javascript program for the above approach
function checkValidString(str)
{
     
    // Initialise frequency array
    var freq = new Array(26).fill(0);
     
    // Traverse the String
    for(var i = 0; i < str.length; i++)
    {
         
        // Update the frequency
        freq[str[i].charCodeAt(0) -
                "a".charCodeAt(0)]++;
    }
     
    // Check for valid String
    for(var i = 0; i < 26; i++)
    {
         
        // If frequency is non-zero
        if (freq[i] !== 0)
        {
             
            // If freq is not equals
            // to (i+1), then return
            // false
            if (freq[i] !== i + 1)
            {
                return false;
            }
        }
    }
     
    // Return true;
    return true;
}
 
// Driver Code
 
// Given String str
var str = "abbcccdddd";
 
if (checkValidString(str))
{
    document.write("Yes");
}
else
{
    document.write("No");
}
 
// This code is contributed by rdtank
 
</script>
Producción: 

Yes

 

Complejidad de tiempo: O(N) , donde N es la longitud de la string. 
Espacio Auxiliar: O(26)

Publicación traducida automáticamente

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