当前位置: 首页 > article >正文

蓝桥杯:大小写转换(异或转换)

一、题目要求

输入一个字符串,将其中的大写字母转换为小写字母,小写字母转换为大写字母,其他字符不变,输出转换后的字符。

示例:
输入:Aa/.+-a
输出:aA/.+-A

二、代码展示

 public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        String str = sc.next();
        for (int i = 0; i < str.length(); i++) {
            char x = str.charAt(i);
            if (x >= 'a' && x<= 'z'){
                x^=32;
            }
            else if (x >= 'A' && x<= 'Z'){
                x^=32;
            }
            System.out.print(x);
        }
    }

x^=32;

在编程中,x ^= 32; 这一行代码通常用于在字符的大小写之间进行转换。具体来说,它利用了ASCII码的特性来实现这一点。以下是详细的解释:

一、ASCII 码简介

在ASCII编码中,大写字母和小写字母之间的差值是32。具体来说:

  大写字母的ASCII码范围是65('A')到90('Z')。
  小写字母的ASCII码范围是97('a')到122('z')。

例如:
 `'A'` 的ASCII码是65。
 `'a'` 的ASCII码是97。
 `97 - 65 = 32`

二、`x ^= 32;` 的作用

`x ^= 32;` 是一种位运算操作,具体来说是按位异或(XOR)。它的作用是将变量 `x` 的二进制表示中的某些位进行翻转。

 具体步骤:

1. 二进制表示:
   - 32 的二进制表示为 `00100000`。
   
2. 按位异或操作:
    对于每一位,如果两个比较的位不同,结果为1;否则为0。
    例如,假设 `x` 的某一位是 `0`,与 `32` 的对应位 `0` 进行异或操作,结果仍然是 `0`。
    如果 `x` 的某一位是 `1`,与 `32` 的对应位 `0` 进行异或操作,结果是 `1`。

三、 在字符转换中的应用:

1.将大写字母转换为小写字母:


   大写字母与 `32` 进行按位异或操作后,会变为对应的小写字母。
   例如,`'A'` 的ASCII码是65 (`01000001`),`65 ^ 32 = 97` (`01100001`),即 `'a'`。

2.将小写字母转换为大写字母:

   小写字母与 `32` 进行按位异或操作后,会变为对应的大写字母。
   例如,`'a'` 的ASCII码是97 (`01100001`),`97 ^ 32 = 65` (`01000001`),即 `'A'`。

四、注意事项

 仅适用于ASCII字符:这种方法依赖于ASCII编码,对于非ASCII字符(如中文、emoji等)可能不适用。
 可读性和维护性:虽然使用位运算可以实现大小写转换,但对于阅读和维护代码的人来说,使用标准库函数(如 `tolower()` 和 `toupper()`)可能更具可读性。


http://www.kler.cn/a/522672.html

相关文章:

  • 团体程序设计天梯赛-练习集——L1-022 奇偶分家
  • 面试经典150题——图
  • 【Elasticsearch】Elasticsearch的查询
  • 智慧园区系统分类及其在提升企业管理效率中的创新应用探讨
  • Linux - 进程间通信(2)
  • 物业巡更系统在现代社区管理中的优势与应用探讨
  • MoE的学习
  • hive:数据导入,数据导出,加载数据到Hive,复制表结构
  • DevEco Studio 4.1中如何创建OpenHarmony的Native C++ (NAPI)程序
  • 租房管理系统实现智能化租赁提升用户体验与运营效率
  • Businessman和businessmen
  • 使用PC版本剪映制作照片MV
  • 【PySide6快速入门】初识布局与QHBoxLayout、QVBoxLayout
  • 2021 年 6 月大学英语四级考试真题(第 2 套)——纯享题目版
  • 递归搜索回溯综合练习(十五题)
  • 力扣-链表-19 删除链表倒数第N个节点
  • 三星手机人脸识别解锁需要点击一下电源键,能够不用点击直接解锁吗
  • Vue 封装http 请求
  • 使用 Intersection Observer 实现高效懒加载和滚动监听
  • 7. 马科维茨资产组合模型+金融研报AI长文本智能体(Qwen-Long)增强方案(理论+Python实战)
  • PPT自动化 python-pptx -7: 占位符(placeholder)
  • java爬虫工具Jsoup学习
  • mysql性能调优之SQL分析与优化
  • 图像处理之图像灰度化
  • MySQL中InnoDB逻辑存储结构
  • 第13章 深入volatile关键字(Java高并发编程详解:多线程与系统设计)