709.转换成小写字母

  1. 709.转换成小写字母
    1. 709.1 题目
    2. 709.2 题解
      1. 方法一:ASCII 码转换
        1. 思路
        2. 复杂度分析
        3. 代码
      2. 方法二:使用内置方法
        1. 思路
        2. 复杂度分析
        3. 代码
    3. 709.3 代码
    4. 709.4 运行结果

709.转换成小写字母


709.1 题目

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

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

709.2 题解

方法一:ASCII 码转换

思路

大写字母 AZ 的 ASCII 码范围是 6590。小写字母 az 的 ASCII 码范围是 97122。大写字母转小写只需将 ASCII 码加 32。遍历字符串,对每个字符判断是否在大写字母范围内,若是则加 32 转换。

核心思想:利用 ASCII 码差值进行大小写转换。

具体步骤

  1. 遍历字符串每个字符。
  2. 如果字符在 65~90 范围内(大写字母),加 32 转换为小写。
  3. 否则保持原字符不变。

举例:对于 s = "Hello"

  • 'H':ASCII 72,在 65~90 范围内,72 + 32 = 104'h'
  • 'e':ASCII 101,不在范围内,保持 'e'
  • 结果:"hello"

复杂度分析

  • 时间复杂度:O(n),遍历字符串一次。
  • 空间复杂度:O(n),存储结果字符串。

代码

// 方法一:把char转成int加32再转回char
// 大写字母 A ~ Z的范围是 65 ~ 90
// 小写字符 a ~ z的范围是 97 ~ 122
// 如果想要把大写字母转换为小写字母,那只需要让其的ASCII码增加32即可 
static string ToLowerCase1(string s)
{
    StringBuilder stringBuilder = new StringBuilder();
    for (int i = 0; i < s.Length; i++)
    {
        char nowChar = (int)s[i] >= 65 && (int)s[i] <= 90 ? (char)(s[i] + 32) : s[i];
        stringBuilder.Append(nowChar);
    }

    return stringBuilder.ToString();
}

方法二:使用内置方法

思路

直接调用 C# 字符串的 ToLower 方法。该方法内部实现了完整的 Unicode 大小写转换逻辑。代码简洁,推荐使用。

核心思想:使用内置方法,简洁高效。

具体步骤

  1. 直接调用 s.ToLower() 方法。

复杂度分析

  • 时间复杂度:O(n),遍历字符串一次。
  • 空间复杂度:O(n),存储结果字符串。

代码

// 方法二:使用内置方法进行字符串小写转换
static string ToLowerCase2(string s)
{
    return s.ToLower();
}

709.3 代码

using System;
using System.Text;

class Program
{
    static void Main()
    {
        #region 题目

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

        // 示例 1:
        // 输入:s = "Hello"
        // 输出:"hello"

        // 示例 2:
        // 输入:s = "here"
        // 输出:"here"

        // 示例 3:
        // 输入:s = "LOVELY"
        // 输出:"lovely"

        // 提示:
        // 1 <= s.length <= 100
        // s 由 ASCII 字符集中的可打印字符组成

        #endregion

        #region 测试

        // 示例 1
        string str1 = "Hello";
        string result1 = ToLowerCase1(str1);
        Console.WriteLine($"示例1 方法1 输出:{result1}");
        string result1_2 = ToLowerCase2(str1);
        Console.WriteLine($"示例1 方法2 输出:{result1_2}");

        // 示例 2
        string str2 = "here";
        string result2 = ToLowerCase1(str2);
        Console.WriteLine($"示例2 方法1 输出:{result2}");
        string result2_2 = ToLowerCase2(str2);
        Console.WriteLine($"示例2 方法2 输出:{result2_2}");

        // 示例 3
        string str3 = "LOVELY";
        string result3 = ToLowerCase1(str3);
        Console.WriteLine($"示例3 方法1 输出:{result3}");
        string result3_2 = ToLowerCase2(str3);
        Console.WriteLine($"示例3 方法2 输出:{result3_2}");

        #endregion
    }

    #region 答案

    // 方法一:把char转成int加32再转回char
    // 大写字母 A ~ Z的范围是 65 ~ 90
    // 小写字符 a ~ z的范围是 97 ~ 122
    // 如果想要把大写字母转换为小写字母,那只需要让其的ASCII码增加32即可 
    static string ToLowerCase1(string s)
    {
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < s.Length; i++)
        {
            char nowChar = (int)s[i] >= 65 && (int)s[i] <= 90 ? (char)(s[i] + 32) : s[i];
            stringBuilder.Append(nowChar);
        }

        return stringBuilder.ToString();
    }

    // 方法二:使用内置方法进行字符串小写转换
    static string ToLowerCase2(string s)
    {
        return s.ToLower();
    }

    #endregion
}

709.4 运行结果

示例1 方法1 输出:hello
示例1 方法2 输出:hello
示例2 方法1 输出:here
示例2 方法2 输出:here
示例3 方法1 输出:lovely
示例3 方法2 输出:lovely


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏