题目链接leetocde709
public class toLowerCase709 {
public String toLowerCase(String s) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if(c >= 65 && c <=90){
c = (char) (c + 32);
//优化,使用位运算
// 由于 [65, 90] 对应的二进制表示为 [(01000001)2, (01011010)2]
// 32 对应的二进制表示为 (00100000)2
// 对于 [(01000001)2, (01011010)2 内的所有数,表示 32 的那个二进制位都是 0,因此可以ch 的 ASCII 码与 32 做按位或运算,替代与 32 的加法运算。
// ASCII码大小写字母编码没有挨着排在一起,是因为大写字母 | 32 = 小写字母
// ch |= 32;
}
sb.append(c);
}
return sb.toString();
}
}