Dada una string de alfabetos ingleses. La tarea es, para cada carácter en la string, imprimir su posición en los alfabetos ingleses.
Nota : Se considera que los caracteres de la string no distinguen entre mayúsculas y minúsculas. Es decir, tanto ‘A’ como ‘a’ están en la primera posición.
Ejemplos:
Entrada: “Geeks”
Salida: 7 5 5 11 19
‘G’ es el 7º carácter de los alfabetos
‘e’ es el 5º y así sucesivamente…
Entrada: “Algoritmos”
Salida: 1 12 7 15 18 9 20 8 13 19
Enfoque:
la posición de una letra en el alfabeto se puede encontrar fácilmente realizando una operación AND lógica con el número 31 .
Tenga en cuenta que esto solo se aplica a las letras y no a los caracteres especiales.
Cada letra tiene un valor ASCII que se puede representar en forma binaria. Realizando el bit a bit y de este valor con el número 31 le dará la posición de la letra en los alfabetos.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <iostream> using namespace std; const int NUM = 31; // Function to calculate the position // of characters void positions(string str, int n) { for (int i = 0; i < n; i++) { // Performing AND operation // with number 31 cout << (str[i] & NUM) << " "; } } // Driver code int main() { string str = "Geeks"; int n = str.length(); positions(str, n); return 0; }
Java
// Java implementation of the approach public class GFG { public static final int NUM = 31; // Function to calculate the position // of characters static void positions(String str, int n) { for (int i = 0; i < n; i++) { // Performing AND operation // with number 31 System.out.print((str.charAt(i) & NUM) + " "); } } // Driver code public static void main(String[] args) { String str = "Geeks"; int n = str.length(); positions(str, n); } }
Python
# Python3 implementation of the approach NUM = 31 # Function to calculate the position # of characters def positions(str): for i in str: # Performing AND operation # with number 31 print((ord(i) & NUM), end =" ") # Driver code str = "Geeks" positions(str)
C#
// C# implementation of the approach using System; class GFG { public static int NUM = 31; // Function to calculate the position // of characters static void positions(string str, int n) { for (int i = 0; i < n; i++) { // Performing AND operation // with number 31 Console.Write((str[i] & NUM) + " "); } } // Driver code public static void Main() { string str = "Geeks"; int n = str.Length; positions(str, n); } } // This code is contributed by AnkitRai01
PHP
<?php // PHP implementation of the approach // Function to calculate the position // of characters function positions($str, $n) { $a = 31; for ($i = 0; $i < $n; $i++) { // Performing AND operation // with number 31$ print((ord($str[$i])&($a))." "); } } // Driver code $str = "Geeks"; $n = strlen($str); positions($str, $n); // This code is contributed by 29AjayKumar ?>
Javascript
<script> // JavaScript implementation of the approach const NUM = 31; // Function to calculate the position // of characters function positions(str, n) { for (i = 0; i < n; i++) { // Performing AND operation // with number 31 document.write((str[i].charCodeAt(0) & NUM) + " "); } } // Driver code var str = "Geeks"; var n = str.length; positions(str, n); </script>
7 5 5 11 19
Complejidad de tiempo: O(n)
Espacio Auxiliar: O(1)