标签:string 验证 int str 字符串 解法 回文
题目:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:
输入: "race a car"
输出: false
解法1:双指针法
string类型获取长度:str.length()
isalnum() 用以判断字符是否是数字和字母
tolower() 把字母转为小写
思路:设定两个指针,第一个从前往后走,第二个从后往前走,一直走到交汇处,看所指元素是否都一致。
class Solution {
public:
bool isPalindrome(string s) {
int len = s.length() - 1;
int i = 0;
while(i <= len){
if(!isalnum(s[i])){
++i;
continue;
}
if(!isalnum(s[len])){
--len;
continue;
}
if(tolower(s[len--]) != tolower(s[i++])){
return false;
}
}
return true;
}
};
特征:回文 解法:前后对比
解法2:翻转字符串比较法
思路:翻转字符串,然后比较原字符串和反转后的字符串是否一致
class Solution {
public:
bool isPalindrome(string s) {
string str;
for(int i : s){
if(isalnum(i)){
str += tolower(i);
}
}
string str_con(str.rbegin(), str.rend());
return str_con == str;
}
};
特征:回文字符串 解法:string str_con(str.rbegin(), str.rend());
标签:string,验证,int,str,字符串,解法,回文 来源: https://blog.csdn.net/clygo9/article/details/115760602
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。