String:125. Valid Palindrome
来源:互联网 发布:手机看高清网络电视 编辑:程序博客网 时间:2024/06/06 19:23
我申请了一个vector来挑出字母和数字,并且在放入vector之前就全部转换成小写字母。
然后再遍历一遍vector,设前后两个指针往中间推。
class Solution {public: bool isPalindrome(string s) { vector<char> ss; for(int i = 0; i < s.size(); ++i) { if(isalnum(s[i])) { ss.push_back(tolower(s[i])); } } int start = 0; int end = ss.size() - 1; if(end == -1) return true; while(start < end) { if(ss[start] != ss[end]) return false; else { start++; end--; } } return true; }};tolower(s[i]) 函数很好用,不用这个函数的话,大写字母-相应的小写字母= 32.附一张ASCII转换表:
但是!但是!不能abs(s[left] - s[right]) != 32这样判断,因为比如‘0’和‘P’就差了32,但是如果又加上判断两个字符是否都是字母又太太太麻烦了。所以判断两个字符是不是同一个字母应该这样写:
class Solution {public: bool isPalindrome(string s) { int left = 0, right = s.size() - 1 ; while (left < right) { if(!isalnum(s[left])) left++; else if(!isalnum(s[right])) right--; else if((s[left] + 32 - 'a') % 32 != (s[right] + 32 - 'a') % 32) return false; else { left++; right--; } } return true; }
阅读全文
0 0
- String:125. Valid Palindrome
- leetcode 125. Valid Palindrome | 回文string
- LeetCode[String]: Valid Palindrome
- <LeetCode>125.Valid Palindrome 验证回文字符串 Tag:string
- [LeetCode]125.Valid Palindrome
- LeetCode 125. Valid Palindrome
- [Leetcode] 125. Valid Palindrome
- 【LeetCode】125.Valid Palindrome
- [leetcode] 125.Valid Palindrome
- 125. Valid Palindrome
- [leetcode] 125.Valid Palindrome
- Leetcode 125. Valid Palindrome
- 125. Valid Palindrome
- 125. Valid Palindrome LeetCode
- 125. Valid Palindrome
- 【LeetCode】125. Valid Palindrome
- 125. Valid Palindrome
- 125. Valid Palindrome
- 2017 icpc 沈阳赛区 1004.array array array(最长序列nlogn算法)
- Java Web应用开发技术简介
- Lcx端口转发和映射
- 爬虫记录(5)——爬到的文件信息保存到数据库
- nginx/Windows-1.9.0的日志分割
- String:125. Valid Palindrome
- Thymeleaf教程 (六) 设置属性值
- zuul动态配置路由规则,从DB读取
- 安卓的apk文件
- 1055. 集体照 (25)
- 交互原型画得丑?29个优秀UI/UX线框草图
- HAL的实现分析
- 九度 题目1109:连通图
- 删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录