转换成小写字母

标签: 字符串

难度: Easy

给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。

 

示例 1:

输入:s = "Hello"
输出:"hello"

示例 2:

输入:s = "here"
输出:"here"

示例 3:

输入:s = "LOVELY"
输出:"lovely"

 

提示:

  • 1 <= s.length <= 100
  • s 由 ASCII 字符集中的可打印字符组成

Submission

运行时间: 18 ms

内存: 15.8 MB

class Solution:
    def toLowerCase(self, str: str) -> str:
        s = []
        for i in str:
            if  65 <= ord(i) <= 90:
                s.append(chr(ord(i) + 32))
            else:
                s.append(i)
        return ''.join(s)
    

Explain

该题解采用逐字符检查的方式来将字符串中的所有大写字母转换成小写字母。具体方法是遍历字符串中的每一个字符,并检查其ASCII码值。如果字符是大写字母(ASCII码在65到90之间),则将其转换为小写字母,即在其ASCII码值上加32(因为大写字母与对应的小写字母之间的ASCII差为32)。如果字符不是大写字母,则直接保留。所有处理过的字符被存储在一个列表中,最后使用join方法将列表中的字符合并成一个新的字符串。

时间复杂度: O(n)

空间复杂度: O(n)

class Solution:
    def toLowerCase(self, str: str) -> str:
        s = []  # 创建一个空列表用于存储转换后的字符
        for i in str:  # 遍历输入字符串的每个字符
            if 65 <= ord(i) <= 90:  # 判断字符是否为大写字母
                s.append(chr(ord(i) + 32))  # 将大写字母转换为小写字母并添加到列表
            else:
                s.append(i)  # 如果不是大写字母,直接添加到列表
        return ''.join(s)  # 将列表中的字符合并成一个字符串并返回

Explore

在给定的算法中,非英文字母字符未被单独处理,因为它们的ASCII码值不会在大写字母的ASCII码范围(65到90)之内。因此,当遇到这些字符时,算法会直接将它们添加到结果列表中,不做任何改变。这样保证了非英文字母字符在转换过程中保持不变。

在Python中,字符串是不可变的,这意味着字符串一旦创建,其内容就不能被修改。直接在原字符串上修改会引发错误或需要不断创建和销毁字符串,这在性能上是低效的。使用列表来存储字符允许我们动态地添加和修改字符,最后通过使用join方法将它们合并成一个新的字符串。这种方法比直接修改字符串更高效,尤其是在处理大规模数据时。

本算法主要针对ASCII字符集设计,对于非ASCII编码的字符集,如UTF-8中的多字节字符,这种方法可能无法正确处理。非ASCII字符的处理需要其他技术或方法,如在Python中可以使用内建的字符串方法str.lower()来处理所有类型的字符,这个方法能够自动识别并正确处理各种语言和符号,包括非ASCII字符。