双语网站建设费用,网页制作与设计第四版电子书,网站后台编辑器不显示,国家企业信用信息公示系统官网(全国)刷题#xff0c;过了真的好有成就感#xff01;#xff01;#xff01; 题解#xff1a;
根据题目要求#xff0c;我们需要处理一下几个问题#xff1a;
将大写字母转变成小写对原来的字符串进行处理#xff0c;只要字母和数字考虑只有一个和字符串为空的情况
1、将…刷题过了真的好有成就感 题解
根据题目要求我们需要处理一下几个问题
将大写字母转变成小写对原来的字符串进行处理只要字母和数字考虑只有一个和字符串为空的情况
1、将大写转变成小写可以用C函数库中的tolower()函数
2、第2和第3看代码即可
代码:
class Solution {
public:bool isPalindrome(string s) {//s1为经过处理后的字符串字母数字string s1;int len s.length();//将大写字母变成小写字母for(int i 0; i len; i ){if(s[i] A s[i] Z){s[i] tolower(s[i]);}}//将其他的字符去除,同时生成新的字符串for(int i 0; i len; i){if(s[i]as[i]z||s[i]0s[i]9){s1.push_back(s[i]);}}int len2s1.length();//当原本的字符串只有一个以及经过处理后的s1为空时返回trueif(s1||len21) return true;int count0;for(int i0; ilen2/2; i){int mlen2-i-1;count(s1[i]s1[m])?1:0;if(count0) return false;}if(count1){return true;}return false;}
};
改进
当我从官方题解那逛一圈回来后有点懵还有点裂开。
借用C库中的两个函数即可完成
isalnum():用于判断字符是否是数字和字符tolower(a)将字符a转变成小写即可转变成大写为toupper
在用tolower(a)转变成小写时如果该字符是数字那没啥影响简洁款代码如下
class Solution {
public:bool isPalindrome(string s) {string s1;for(char c:s){if(isalnum(c)){s1tolower(c);}}string s2(s1.rbegin(),s1.rend());return s1s2;}
};翻转也可以用reverse(s.begin,s.end);里面就已经改变了不需要用其他的对其进行接收,这样也行的。