Comprobador de strings Super ASCII | Código TCSVita

En el país de Byteland, una string S se dice super string ASCII si y solo si el recuento de cada carácter en la string es igual a su valor ASCII. En el país de Byteland, el código ASCII de ‘a’ es 1, ‘b’ es 2, …, ‘z’ es 26 . La tarea es averiguar si la string dada es una súper string ASCII o no. Si es verdadero, escriba «Sí»; de lo contrario, escriba «No» .

Ejemplos:

Entrada: S = “bba” 
Salida:
Explicación:
La cuenta del carácter ‘b’ es 2 y el valor ASCII de ‘b’ también es 2.
La cuenta del carácter ‘a’ es 1. y el valor ASCII de ‘a ‘ también es 1. 
Por lo tanto, la string «bba» es una string súper ASCII.

Entrada: S = “ssba”
Salida: No
Explicación:
La cuenta del carácter ‘s’ es 2 y el valor ASCII de ‘s’ es 19.
La cuenta del carácter ‘b’ es 1. y el valor ASCII de ‘b’ es 2.
Por lo tanto, la string «ssba» no es una súper string ASCII.

Enfoque: el valor ASCII de un carácter ‘ ch ‘ en Byteland se puede calcular mediante la siguiente fórmula:

El valor ASCII de ch = equivalente entero de ch – equivalente entero de ‘a'(97) + 1

Ahora, usando esta fórmula, el conteo de frecuencia de cada carácter en la string se puede comparar con su valor ASCII. Siga los pasos a continuación para resolver el problema:

  • Inicialice una array para almacenar el conteo de frecuencia de cada carácter de la string .
  • Atraviese la string S e incremente el conteo de frecuencia de cada carácter en 1 .
  • Nuevamente, recorra la string S y verifique si algún carácter tiene una frecuencia distinta de cero y no es igual a su valor ASCII, luego imprima «No» .
  • Después de los pasos anteriores, si no hay tal carácter en el paso anterior, imprima «Sí» .

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

Python3

import string #for accessing alphabets
 
dicti = {}
a = []
 
#creating a list with the alphabets
for i in string.ascii_lowercase:
    a.append(i)
 
#creating a dictionary for the alphabets and correpondind ascii code
for i in string.ascii_lowercase:
    for j in range (1,27):
        if (a.index(i)+1) == j: #if the number is equal to the position of the alphabet
            dicti[i] = j        #in the list, then the number will be ascii code for the
            break               #aplhabet in the dictionary
 
s = 'bba'
t = True #t is initialized as true
 
for i in s:
    if s.count(i) != dicti[i]: #if any of the alphabet count is not equal to its
        t = False              #corresponding ascii code in the dictionary, t will be false
 
if t:
    print("Yes")            #printing yes if t remains true after checking all alphabets
else:
    print("No")
     
#code written by jayaselva

C

// C program for the above approach
#include <stdio.h>
#include <string.h>
 
// Function to check whether the
// string is super ASCII or not
void checkSuperASCII(char s[])
{
    // Stores the frequency count
    // of characters 'a' to 'z'
    int b[26] = { 0 };
 
    // Traverse the string
    for (int i = 0; i < strlen(s); i++) {
 
        // AscASCIIii value of the
        // current character
        int index = (int)s[i] - 97 + 1;
 
        // Count frequency of each
        // character in the string
        b[index - 1]++;
    }
 
    // Traverse the string
    for (int i = 0; i < strlen(s); i++) {
 
        // ASCII value of the current
        // character
        int index = (int)s[i] - 97 + 1;
 
        // Check if the frequency of
        // each character in string
        // is same as ASCII code or not
        if (b[index - 1] != index) {
            printf("No");
            return;
        }
    }
 
    // Else print "Yes"
    printf("Yes");
}
 
// Driver Code
int main()
{
    // Given string S
    char s[] = "bba";
 
    // Function Call
    checkSuperASCII(s);
    return 0;
}

Java

// Java program for the above approach
import java.io.*;
import java.util.*;
 
class GFG{
     
// Function to check whether the
// string is super ASCII or not
public static void checkSuperASCII(String s)
{
     
    // Stores the frequency count
    // of characters 'a' to 'z'
    int b[] = new int[26];
 
    // Traverse the string
    for(int i = 0; i < s.length(); i++)
    {
         
        // AscASCIIii value of the
        // current character
        int index = (int)s.charAt(i) - 97 + 1;
         
        // Count frequency of each
        // character in the string
        b[index - 1]++;
    }
 
    // Traverse the string
    for(int i = 0; i < s.length(); i++)
    {
         
        // ASCII value of the current
        // character
        int index = (int)s.charAt(i) - 97 + 1;
         
        // Check if the frequency of
        // each character in string
        // is same as ASCII code or not
        if (b[index - 1] != index)
        {
            System.out.println("No");
            return;
        }
    }
     
    // Else print "Yes"
    System.out.println("Yes");
}
 
// Driver Code
public static void main(String args[])
{
     
    // Given string S
    String s = "bba";
     
    // Function Call
    checkSuperASCII(s);
}
}
 
// This code is contributed by Md Shahbaz Alam

Python3

# Python3 program for the above approach
 
# Function to check whether the
# string is super ASCII or not
def checkSuperASCII(s):
     
    # Stores the frequency count
    # of characters 'a' to 'z'
    b = [0 for i in range(26)]
 
    # Traverse the string
    for i in range(len(s)):
         
        # AscASCIIii value of the
        # current character
        index = ord(s[i]) - 97 + 1;
 
        # Count frequency of each
        # character in the string
        b[index - 1] += 1
 
    # Traverse the string
    for i in range(len(s)):
         
        # ASCII value of the current
        # character
        index = ord(s[i]) - 97 + 1
 
        # Check if the frequency of
        # each character in string
        # is same as ASCII code or not
        if (b[index - 1] != index):
            print("No")
            return
 
    # Else print "Yes"
    print("Yes")
 
# Driver Code
if __name__ == '__main__':
     
    # Given string S
    s = "bba"
 
    # Function Call
    checkSuperASCII(s)
 
# This code is contributed by SURENDRA_GANGWAR

C#

// C# program for the above approach
using System;
class GFG {
     
    // Function to check whether the
    // string is super ASCII or not
    static void checkSuperASCII(string s)
    {
          
        // Stores the frequency count
        // of characters 'a' to 'z'
        int[] b = new int[26];
      
        // Traverse the string
        for(int i = 0; i < s.Length; i++)
        {
              
            // AscASCIIii value of the
            // current character
            int index = (int)s[i] - 97 + 1;
              
            // Count frequency of each
            // character in the string
            b[index - 1]++;
        }
      
        // Traverse the string
        for(int i = 0; i < s.Length; i++)
        {
              
            // ASCII value of the current
            // character
            int index = (int)s[i] - 97 + 1;
              
            // Check if the frequency of
            // each character in string
            // is same as ASCII code or not
            if (b[index - 1] != index)
            {
                Console.WriteLine("No");
                return;
            }
        }
          
        // Else print "Yes"
        Console.WriteLine("Yes");
    }
 
  // Driver code
  static void Main()
 {
     
    // Given string S
    string s = "bba";
      
    // Function Call
    checkSuperASCII(s);
  }
}
 
// This code is contributed by divyeshrabadiya07.
Producción: 

Yes

 

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

Publicación traducida automáticamente

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