网页粒子效果网站建设一个网站需要
web/
2025/9/26 14:48:23/
文章来源:
网页粒子效果网站,建设一个网站需要,深圳南山区住房和建设局网站官网,住建部四库一平台目录
题目要求
代码实现 题目要求
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
给你一个字符串 s#xff0c;如果它是 回文串 #xf…目录
题目要求
代码实现 题目要求
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
给你一个字符串 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 是一个空字符串 。
由于空字符串正着反着读都一样所以是回文串。 代码实现
代码演示
bool isalnum(char ch) //判断字符是否是字母或者数字
{if (ch a ch z || ch A ch Z ||ch 0 ch 9){return true;}else{return false;}
}char tolower(char ch) //将大写字母转换成小写字母
{if (ch A ch Z)return ch 32;elsereturn ch;
}bool isPalindrome(char* s)
{int left 0;int right strlen(s) - 1;while (left right){// 非字母或者数字时while (left right !isalnum(s[left]))left;while (right left !isalnum(s[right]))right--;if (left right){if (tolower(s[left]) ! tolower(s[right]))return false;}left;right--;}return true;
}
代码解析
利用 isalnum 函数跳过非字母非数字的字符需要注意的是当 s 字符串中全是非字母非数字的字符时所以要加上 left right 和 right left 的判断 再利用 tolower 函数将各自的大写字母转换为小写字母当 tolower 函数判断为小写字母或者数字时就会直接返回s[left] 和 s[right] 比较后不相等就说明不是回文串 当 while 循环走完后那么 s 就是回文串
代码验证
算法的时间和空间复杂度
while(left right) 最好的情况时执行 longN 次但内部有两个 while 循环 所以要看最坏的情况最坏的情况执行了 N 次且没有开辟额外的空间得
时间复杂度O(N)
空间复杂度O(1)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82244.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!