每日leetcode

709. 转换成小写字母 - 力扣(LeetCode)

题目

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

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

思路

  1. 首先我们需要了解大小写字母的ASCII编码的大小关系——大写字母的ASCII码小于小写字母的ASCII码,且两者之间并不是连续的(即Z+1≠a)。
  2. 明确关系后我们就可以根据字符的ASCII码是否在大写字母的范围中判断是否需要变换,若需要,则加上'a'-'A'的差值(大写变小写的ASCII值差)。

代码实现

class Solution {
public:
    string toLowerCase(string s) {
        int diff = 'a' - 'A';
        for(int i = 0; i < s.size(); ++i) {
            if(s[i] >= 'A' && s[i] <= 'Z') s[i] += diff;
        }
        return s;
    }
};

复杂度分析

  • 时间复杂度:O(n)。
  • 空间复杂度:O(1)。

题解

  • 竟然有内置函数tolower(c);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值