• 转换成小写字母


    实现函数 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]);
        }
    }

     

    因上求缘,果上努力~~~~ 作者:每天卷学习,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/12806082.html

  • 相关阅读:
    centos 用户指定目录访问
    centos FTP 用户指定目录禁用上级目录
    centos下SVN搭建多个库文件总汇
    listview点击checkbox,修改值
    C#转成时间格式
    nmap 查看主机上开放的端口
    xargs、管道、exec区别
    OSI七层模型,作用及其对应的协议
    linux面试题(重点)
    数据库备份还原 mysqldump
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/12806082.html
Copyright © 2020-2023  润新知