文章目錄
- 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> // 注意這里不是string.h,string.h是C字串頭檔案
2.字符大小寫轉換與判斷常用函式
- 在常用的string類字符操作時,又會經常用到大小寫轉換以及判斷等問題,這時候就可以用相關的函式進行操作,常用的幾個轉換以及判斷函式總結如下:
以下函式的宣告在頭檔案<cctype>
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]);

3.LeetCode例題使用示范
3.1例題一

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例題二

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;
}
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/265837.html
標籤:AI
上一篇:Java注解和反射
