???? 验证回文串
题目链接:验证回文串
✨方法一:
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;
}
};
✨方法二:
//更好的双指针做法。
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;
}
};
???? 检验大写字母
题目链接:检验大写字母
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;
}
};