Dada una string, escriba una función que devuelva alternar entre mayúsculas y minúsculas de una string utilizando los operadores bit a bit en su lugar.
En los códigos ASCII , el carácter ‘A’ es el número entero 65 = (0100 0001)2, mientras que el carácter ‘a’ es el número entero 97 = (0110 0001)2. De manera similar, el carácter ‘D’ es el número entero 68 = (0100 0100)2, mientras que el carácter ‘d’ es el número entero 100 = (0110 0100)2.
Como podemos ver, solo el sexto bit menos significativo es diferente en el código ASCII de ‘A’ y ‘a’. Se puede ver un comportamiento similar en el código ASCII de ‘D’ y ‘d’. Por lo tanto, necesitamos alternar este bit para alternar entre mayúsculas y minúsculas.
Ejemplos:
Input : "GeekSfOrgEEKs" Output : "gEEKsFoRGeekS" Input : "StRinG" Output : "sTrINg"
La tabla ASCII está construida de tal manera que la representación binaria de letras minúsculas es casi idéntica a la representación binaria de letras mayúsculas.
Caso de alternancia:
El número entero con 6th LSB como 1 es 32 (0010 0000). Por lo tanto, la operación XOR bit a bit de un carácter con 32 alternará el sexto LSB del carácter y, por lo tanto, alternará su caso. Si el carácter está en mayúsculas, se convertirá a minúsculas y viceversa.
Implementación:
C++
// C++ program to get toggle case of a string #include <bits/stdc++.h> using namespace std; // tOGGLE cASE = swaps CAPS to lower // case and lower case to CAPS char *toggleCase(char *a) { for(int i = 0; a[i] != '\0'; i++) { // Bitwise EXOR with 32 a[i] ^= 32; } return a; } // Driver Code int main() { char str[] = "CheRrY"; cout << "Toggle case: " << toggleCase(str) << endl; cout << "Original string: " << toggleCase(str) << endl; return 0; } // This code is contributed by noob2000
C
// C program to get toggle case of a string #include <stdio.h> // tOGGLE cASE = swaps CAPS to lower // case and lower case to CAPS char *toggleCase(char *a) { for (int i=0; a[i]!='\0'; i++) { // Bitwise EXOR with 32 a[i] ^= 32; } return a; } // Driver Code int main() { char str[] = "CheRrY"; printf("Toggle case: %s\n", toggleCase(str)); printf("Original string: %s", toggleCase(str)); return 0; }
Java
// program to get toggle case of a string public class Test { static int x=32; // tOGGLE cASE = swaps CAPS to lower // case and lower case to CAPS static String toggleCase(char[] a) { for (int i=0; i<a.length; i++) { // Bitwise EXOR with 32 a[i]^=32; } return new String(a); } /* Driver program */ public static void main(String[] args) { String str = "CheRrY"; System.out.print("Toggle case: "); str = toggleCase(str.toCharArray()); System.out.println(str); System.out.print("Original string: "); str = toggleCase(str.toCharArray()); System.out.println(str); } }
Python3
# Python3 program to get toggle case of a string x = 32; # tOGGLE cASE = swaps CAPS to lower # case and lower case to CAPS def toggleCase(a): for i in range(len(a)): # Bitwise EXOR with 32 a = a[:i] + chr(ord(a[i]) ^ 32) + a[i + 1:]; return a; # Driver Code str = "CheRrY"; print("Toggle case: ", end = ""); str = toggleCase(str); print(str); print("Original string: ", end = ""); str = toggleCase(str); print(str); # This code is contributed by 29AjayKumar
C#
// C# program to get toggle case of a string using System; class GFG { // tOGGLE cASE = swaps CAPS to lower // case and lower case to CAPS static string toggleCase(char []a) { for (int i = 0; i < a.Length; i++) { // Bitwise EXOR with 32 a[i] ^= (char)32; } return new string(a); } /* Driver program */ public static void Main() { string str = "CheRrY"; Console.Write("Toggle case: "); str = toggleCase(str.ToCharArray()); Console.WriteLine(str); Console.Write("Original string: "); str = toggleCase(str.ToCharArray()); Console.Write(str); } } // This code is contributed by nitin mittal.
Javascript
<script> // program to get toggle case of a string x = 32; // tOGGLE cASE = swaps CAPS to lower // case and lower case to CAPS function toggleCase(a) { for (i = 0; i < a.length; i++) { // Bitwise EXOR with 32 a[i] = String.fromCharCode(a[i].charCodeAt(0)^32); } return a.join("");; } /* Driver program */ var str = "CheRrY"; document.write("Toggle case: "); str = toggleCase(str.split('')); document.write(str); document.write("<br>Original string: "); str = toggleCase(str.split('')); document.write(str); // This code is contributed by Princi Singh </script>
Toggle case: cHErRy Original string: CheRrY
Complejidad temporal : O(n)
Espacio auxiliar : O(1)
Gracias a Kumar Gaurav por mejorar la solución.
Artículo similar:
Conversión de mayúsculas y minúsculas de una string usando operadores BitWise en C/C++
Este artículo es una contribución de Sanjay Kumar Ulsha de JNTUH College Of Engineering, Hyderabad . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA