转换成小写字母

实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。

 

示例 1:

  输入: "Hello"
  输出: "hello"
示例 2:

  输入: "here"
  输出: "here"
示例 3:

  输入: "LOVELY"
  输出: "lovely"

 

思路1
  利用ASCII值大小写之间相差32的性质,遇到大写的字母,加上32就是相应的小写字母。

 string toLowerCase(string str) {
        int len = str.size();
        for(int i = 0; i < len; ++ i){
            if(str[i] <= 'Z' && str[i] >= 'A'){
                str[i] = str[i] + 32;
            }
        }
        return str;
    }

 


思路2
  使用哈希映射,打表,将大写的字母作为key, 小写字母作为value,遇到key,用相应key的value赋值。

 

 

思路3
位运算

  大写变小写、小写变大写 : 字符 ^= 32;
  大写变小写、小写变小写 : 字符 |= 32;
  小写变大写、大写变大写 : 字符 &= -33;

#include<iostream>
using namespace std;
int main(){
    string s;
    cin>>s;
    int i =0;
    while (s[i])
    {
        s[i++]|=32;
    }
    cout<<s<<endl;
}

 

思路4
  使用内置函数tolower(),但是既然在训练算法,那就建议不要使用内置函数

  在C++语言中   tolower()函数是把字符串都转化为小写字母

                               touppre()函数是把字符串都转化为大写字母

其中需要注意的是:这两个函数的声明在头文件<cctype>中

 但是经过测试,如果不包含头文件<cctype>仅仅有<iostream>也是可以的

 

#include<iostream>
using namespace std;
int main(){
    string a;
    //用string库,调用getline, 直接读入一整行
    getline(cin,a);
    //转换大小写,可以都转换为大写,或者小写
    for (int i=0;i<a.length();++i){
        a[i]=tolower(a[i]);
    }
}

 

posted @ 2020-04-30 00:13  关注我更新论文解读  阅读(132)  评论(0编辑  收藏  举报