C++ _ string类常用函数(字符大小写转换与判断)

文章目录

  • 1.string类介绍
  • 2.字符大小写转换与判断常用函数
    • 2.1 字符大小写判断
      • 2.1.1 isalpha()
      • 2.1.2 isalnum()
      • 2.1.3 islower()
      • 2.1.4 isupper()
    • 2.2 字符大小写转换
      • 2.2.1 tolower()
      • 2.2.2 toupper()
  • 3.LeetCode例题使用示范
    • 3.1例题一
      • 3.1.1方法一
      • 3.1.2方法二
    • 3.2例题二
      • 3.2.1方法

1.string类介绍

  • string是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行string操作,也可以通过文件等手段进行string操作。同时,C++的算法库对string类也有着很好的支持,并且string类还和c语言的字符串之间有着良好的接口。

#include // 注意这里不是string.h,string.h是C字符串头文件

2.字符大小写转换与判断常用函数

  • 在常用的string类字符操作时,又会经常用到大小写转换以及判断等问题,这时候就可以用相关的函数进行操作,常用的几个转换以及判断函数总结如下:

以下函数的声明在头文件

  • isalpha() 用来判断一个字符是否为字母,如果是字符则返回非零,否则返回零。
  • isalnum() 用来判断一个字符是否为数字或者字母,也就是说判断一个字符是否属于a~z||A~Z||0~9。
  • islower() 用来判断一个字符是否为小写字母,也就是是否属于a~z。
  • isupper()和islower相反,用来判断一个字符是否为大写字母。
  • tolower() 函数是把字符串都转化为小写字母。
  • toupper() 函数是把字符串都转化为大写字母。

2.1 字符大小写判断

2.1.1 isalpha()

isalpha()用来判断一个字符是否为字母,如果是字符则返回非零,否则返回零。

cout<<isalpha('a'); //返回非零
cout<<isalpha('2'); //返回0

2.1.2 isalnum()

isalnum()用来判断一个字符是否为数字或者字母,也就是说判断一个字符是否属于az||AZ||0~9。

cout<<isalnum('a'); //输出非零
cout<<isalnum('2'); // 非零
cout<<isalnum('.'); // 零

2.1.3 islower()

islower()用来判断一个字符是否为小写字母,也就是是否属于a~z。

cout<<islower('a'; //非零
cout<<islower('2'); //输出0
cout<<islower('A'); //输出0

2.1.4 isupper()

isupper()和islower相反,用来判断一个字符是否为大写字母。

cout<<isupper('a'); //返回0
cout<<isupper('2'); //返回0
cout<<isupper('A'); //返回非零

2.2 字符大小写转换

2.2.1 tolower()

tolower()函数是把字符串都转化为小写字母。

string str= "THIS IS A STRING";
for (int i=0; i <str.size(); i++)
   {
   str[i] = tolower(str[i]);
   }

在这里插入图片描述

2.2.2 toupper()

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

string str= "hahahahaha";
for (int i=0; i <str.size(); i++)
   str[i] = toupper(str[i]);

C++ _ string类常用函数(字符大小写转换与判断)_第1张图片

3.LeetCode例题使用示范

3.1例题一

C++ _ string类常用函数(字符大小写转换与判断)_第2张图片

3.1.1方法一

class Solution {
public:
    bool isPalindrome(string s) {
        string str="\0";//定义一个新的字符串
        for(int i=0;i<s.length();i++){//对字符串s进行遍历
            if(isalnum(s[i])){//isalnum判定是不是字母或者数字字符
                str += tolower(s[i]);//将大写字母转换为小写,如果不是则不动
            }
        }
        string str_rev(str.rbegin(),str.rend());//对新字符串进行反转
        if(str==str_rev)//如果反转以后的字符串和原字符串相等则返回true
        return true;
        else
        return false;
    }
};

3.1.2方法二

//更好的双指针做法。
class Solution {
public:
    bool isPalindrome(string s) {
        string str = "\0";
        int n = s.length();
        int begin = 0;
        int end = n - 1;
        while (begin < end) {
            while (begin < end && (!isalnum(s[begin]))) {
                begin++;//从前往后找符合条件的字符
            }
            while (begin < end && (!isalnum(s[end]))) {
                end--;//从后往前找符合条件的字符
            }
            if (tolower(s[begin]) != tolower(s[end]))
                return false;

            begin++;
            end--;
        }
        return true;
    }
};

3.2例题二

C++ _ string类常用函数(字符大小写转换与判断)_第3张图片

3.2.1方法

class Solution {
public:
    bool detectCapitalUse(string word) {
        int size=word.length();
        int Big=0;//大写字符
        int Small=0;//小写字符
        for(int i=0;i<size;i++)//先遍历字符串中的字符
        {
            if(islower(word[i]))//islower()小写字符个数
            {
                Small++;
            }
            else if(isupper(word[i]))//isupper()大写字符个数
            {
                Big++;
            }
        }
        if(Small==size||Big==size)//如果都是大写或者小写返回true
        {
            return true;
        }
        else if(Big==1&&isupper(word[0]))//如果大写只有一个且是第一个返回true
        {
            return true;
        }
        else
        return false;
    }
};

你可能感兴趣的:(笔记,力扣,C/C++,c++,string,leetcode)