题目描述:

解题思路:
根据ASCII表可以知道,大写的字母在65到90之间,小写字母在97到122之间,大小写字母之间打间隔为(97-65)= 32,刚好是32位,本题我们可以将字符是大写字母的对应到ASCII编码表中直接加上32,这里用 按位或 相加不用进位,速度比直接用+号更快,这样就都是小写字母了。
代码实现如下:
class Solution {
public String toLowerCase(String s) {
StringBuilder str = new StringBuilder();
for (int i = 0;i < s.length();i++) {
char ch = s.charAt(i);
if (ch <= 'Z' && ch >= 'A') {
ch |= 32;
}
str.append(ch);
}
return str.toString();
}
}
ASCII表:

或者也可以投机取巧直接用语言自带的API。
class Solution {
public String toLowerCase(String s) {
return s.toLowerCase();
}
}
本文介绍了一种利用ASCII编码特性,通过按位或操作将大写字母转换为小写的高效算法,并提供了两种代码实现方式。同时,提到了使用编程语言内置API的便捷方法。

被折叠的 条评论
为什么被折叠?



