题目
实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。
示例 1:
输入: “Hello”
输出: “hello”
示例 2:
输入: “here”
输出: “here”
示例 3:
输入: “LOVELY”
输出: “lovely”
思路解法
根据ASCII表进行转换
大写字母与小写字母之间差值为32
于是
class Solution {
public:
string toLowerCase(string str) {
for(int i=0;i<str.size();i++){
if(‘A’<=str[i] && str[i]<=‘Z’){
str[i] += 32;
}
}
return str;
}
};
**
位运算
**
根据评论区@Alfeim的总结:
大写变小写、小写变大写 : 字符 ^= 32;
大写变小写、小写变小写 : 字符 |= 32;
小写变大写、大写变大写 : 字符 &= -33;
class Solution {
public:
string toLowerCase(string str) {
for(int i=0;i<str.size();i++){
for(char &ch:str){
ch |= 32;
}
}
return str;
}
};
注意:对于增强型for循环,for(char &ch:str)由于取出了str中每一位的地址,因此直接对原数组进行改变操作;若是for(char ch:str),则原数组不发生变化