Java大写字母转换成小写字母(小转大、与或异或运算)

该博客探讨了两种在Java中将字符串转换为小写的方法:一是使用内置的toLowerCase()方法,二是通过ASCII码操作实现。文章详细解释了ASCII码与字符之间的关系,特别是如何通过按位或运算来将大写字母转换为小写字母。内容涵盖了字符串处理的基础知识和位运算在编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:

https://leetcode-cn.com/problems/to-lower-case/
在这里插入图片描述

解题思路1:
使用语言自带的API

class Solution {
    public String toLowerCase(String s) {
        return s.toLowerCase();
        //return s.toUpperCase();
    }
}

解题思路2:

  1. 大写字母 A~Z 的 ASCII 码范围为 [65, 90]
    小写字母 a~z 的 ASCII 码范围为 [97, 122]
  2. 如果ch的 ASCII 码在 [65, 90] 的范围内, 那么我们将它的 ASCII 码增加 32 , 即可得到对应的小写字母
  3. 32 对应的二进制表示为 [00100000]
    [65, 96] 对应的二进制表示为 [(01000001), (01011010)], 在 [65, 96] 这个区间的所有数表示 32 的那个二进制都是 0 (即对应上述标红的三个数字位置)
  4. 65 + 32 = 01000001 + 00100000 = 01100001
    而二进制中的 0 + 1 在按位或运算中可以得到 1
    因此可以对 ch 的 ASCII 码与 32 做按位或运算,替代 ch 与 32 的加法运算
class Solution {
    public String toLowerCase(String s) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); ++i) {
            char ch = s.charAt(i);
            if (ch >= 65 && ch <= 90) {
                ch |= 32;
            }
            sb.append(ch);
        }
        return sb.toString();
    }
}

与、或、异或运算知识

  • 大变小,小变大( 大写变小写、小写变大写 ) : 字符 ^= 32
  • 大变小 (大写变小写、小写变小写 ): 字符 |= 32
  • 小变大 (小写变大写、大写变大写 ): 字符 &= -33
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值