leetcode刷题日记-转换成小写字母

  • 题目描述:给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。
  • 示例:
    输入:s = “Hello”
    输出:“hello”
    输入:s = “LOVELY”
    输出:“lovely”

  • 题目解析,这是一个灰常简单的题目,准确的说一句代码就能完事,如下:
class Solution:
    def toLowerCase(self, s: str) -> str:
        return s.lower()

    那么我为什么还要记下这个题目呢,因为这个题目虽然一句代码就能完成,但是他是基于python自带的字符串函数lower()完成,如果不适用这个函数呢?这样,这个题目就变得有意思起来了。首先我们要知道,python里面的各个字符都是ASCII编码或者Unicode 编码,一般来说,小写字母和大写字母都是ASCII编码,也就是说每一个小写字母和大写字母都对应着一个编码-一个数值,那么我们掌握了这个数值的分布规律是不是就能摆脱对这个python内置函数lower()的依赖呢?答案是肯定的。
    首先介绍一下两个函数,分别是ord和chr。chr函数很好理解,他是char的缩写,意思是将给定的数字编码转换为对应的字符。

  • 举个栗子:
    在这里插入图片描述
        ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值。
  • 举个栗子:
    在这里插入图片描述
        好了背景知识以及介绍完了,现在进入正题,其实上述的栗子已经突出主题了,我们可以发现A-Z对应的ASCII编码是65-90,而a-z对应的ASCII编码是97-122,即相同字母的大小写相差32,举个栗子,如下。
    在这里插入图片描述
        因此到这里,我们的新解题思路就出来了。
  • 如果我们要把一个大写字母转化为小写:
if 65<=ord(word)<=90:
    print(chr(ord(word)+32))
  • 同理,如果我们要把一个小写字母转化为大写:
if 97<=ord(word)<=122:
    print(chr(ord(word)-32))
  • 那么这个题目的另一种方法,也不叫另外一种方法吧,lower()方法的底层实现解法是:
class Solution:
    def toLowerCase(self, s: str) -> str:
        """
        将一个字符串的大写字母转换为相同的小写字母
        >>>self.toLowerCase("Hello")
        >>>"hello"
        """
        ans = ''
        for c in s:
            if 65<=ord(c)<=90:
                ans += chr(ord(c)+32)
            else:
                ans += c
        return ans
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lemon_tttea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值