题目
给你一个字符串 s
,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。
示例 1:
输入:s = "Hello"
输出:"hello"
示例 2:
输入:s = "here"
输出:"here"
示例 3:
输入:s = "LOVELY"
输出:"lovely"
提示:
1 <= s.length <= 100
s
由 ASCII 字符集中的可打印字符组成
思路
- 首先我们需要了解大小写字母的ASCII编码的大小关系——大写字母的ASCII码小于小写字母的ASCII码,且两者之间并不是连续的(即Z+1≠a)。
- 明确关系后我们就可以根据字符的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);