题目描述
给定一个只包含大写字母和小写字母的字符串,请将其中所有的小写字母转换成大写字母后将字符串输出。
输入描述
输入一行包含一个字符串。
输出描述
输出转换成大写后的字符串。
输入输出样例
输入
LanQiao
输出
LANQIAO
评测用例规模与约定
对于所有评测用例,字符串的长度不超过 100 。
思路解析
一个巧妙的位运算符转大写公式
'a'=97 'A'=65 '0'=48
c ^ (1 << 5)
位运算符
小写字母二进制第五位第六位一定是 1 ,大写字母二进制第五位一定不是 1,所以与 32 的二进制异或操作之后,正好可以减去一个 32,得到大写字母
解题代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.next();
for (char c : s.toCharArray()) {
if (c >= 'a') System.out.print((char) (c ^ (1 << 5)));
else System.out.print(c);
}
}
}
当然也有其它的方法
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String x = in.next().toUpperCase();
System.out.println(x);
}
}