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: Sí
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.
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