移动 网站模板,网站建设项目团队组织结构图,discuz论坛建站教程,交互式手机网站文章目录 力扣题目代码 力扣题目
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
给你一个字符串 s#xff0c;如果它是 回文串 #xff0c;… 文章目录 力扣题目代码 力扣题目
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
给你一个字符串 s如果它是 回文串 返回 true 否则返回 false 。
示例 1
输入: s “A man, a plan, a canal: Panama” 输出true 解释“amanaplanacanalpanama” 是回文串。 示例 2
输入s “race a car” 输出false 解释“raceacar” 不是回文串。 示例 3
输入s 输出true 解释在移除非字母数字字符之后s 是一个空字符串 “” 。 由于空字符串正着反着读都一样所以是回文串。
代码
思路分析: 1.写一个函数my_isDigPha判断字符是否是字母数字如果大写需要转换为小写 2.设置一前一后2个指针跳过非字母数字的字符然后对比2个字符是否相同如果存在不相同的那就不是回文串。
int my_isDigPha(char *s)
{if((*s A *s Z) || (*s a *s z) || (*s 0 *s 9)){if(*s A *s Z){*s 32;}return 1;}else{return 0;}
}bool isPalindrome(char* s)
{int i 0;int j strlen(s) - 1;while(i j){/*跳过非字母数字字符*/if((my_isDigPha(s[i]) ! 0) (my_isDigPha(s[j]) ! 0)){if(s[i] ! s[j]){return false;}i;j--;}else{if(my_isDigPha(s[i]) 0){i;}if(my_isDigPha(s[j]) 0){j--;}}}return true;
}