使用位运算符切换字符串的大小写

给定一个字符串,编写一个函数,使用位运算符返回字符串的大小写。 在里面 ASCII码 代码中,字符“A”是整数65=(0100 0001)2,而字符“A”是整数97=(0110 0001)2。类似地,字符“D”是整数68=(0100 0100)2,而字符“D”是整数100=(0110 0100)2。

null

正如我们所看到的,“A”和“A”的ASCII码中只有第六个最低有效位不同。类似的行为可以在“D”和“D”的ASCII码中看到。因此,我们需要切换这个位来切换大小写。

例如:

Input : "GeekSfOrgEEKs"Output : "gEEKsFoRGeekS"                  Input : "StRinG"Output : "sTrINg"

这个 ASCII表 以这样的方式构造,小写字母的二进制表示几乎与大写字母的二进制表示相同。

切换箱 第6个LSB为1的整数为32(0010 0000)。因此,字符的32位异或将切换字符的第6个LSB,从而切换其大小写。如果字符是大写,它将转换为小写,反之亦然。

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] != ' ' ; 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]!= ' ' ; i++) {
// Bitwise EXOR with 32
a[i] ^= 32;
}
return a;
}
// Driver Code
int main()
{
char str[] = "CheRrY" ;
printf ( "Toggle case: %s" , 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: cHErRyOriginal string: CheRrY

感谢库马尔·高拉夫对解决方案的改进。 类似条款: C/C中使用位运算符的字符串大小写转换++ 本文由 桑杰·库马尔·乌尔沙 从…起 海得拉巴JNTUH工程学院 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享