leetcode 125. Valid Palindrome | 回文string
来源:互联网 发布:linux百度翻译 编辑:程序博客网 时间:2024/06/06 05:11
Description
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
“A man, a plan, a canal: Panama” is a palindrome.
“race a car” is not a palindrome.
Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.
For the purpose of this problem, we define empty string as valid palindrome.
My solution
// 我的解法太长了,显然是可以被精简的,里面太多if规则class Solution {public: bool isPalindrome(string s) { int i = 0, j = s.size() - 1; int iscapi, iscapj; while (i < j) { iscapi = 0; iscapj = 0; for (; i < j;) { if ('a' <= s[i] && s[i] <= 'z') { iscapi = 1; break; } if ('A' <= s[i] && s[i] <= 'Z') { iscapi = 2; break; } if ('0' <= s[i] && s[i] <= '9') break; i++; } for (; i < j;) { if ('a' <= s[j] && s[j] <= 'z') { iscapj = 1; break; } if ('A' <= s[j] && s[j] <= 'Z') { iscapj = 2; break; } if ('0' <= s[j] && s[j] <= '9') break; j--; } if(i==j) break; if (iscapi == iscapj) { if (s[i] != s[j]) return false; } else { if (iscapi == 2) if (s[i] - s[j] != -32) return false; else; else if (s[i] - s[j] != 32) return false; } i++; j--; } return true; }};
当心上面有悬挂else陷阱.之前发生了错误.
Discuss
bool isPalindrome(string s) { for (int i = 0, j = s.size() - 1; i < j; i++, j--) { // Move 2 pointers from each end until they collide while (isalnum(s[i]) == false && i < j) i++; // Increment left pointer if not alphanumeric while (isalnum(s[j]) == false && i < j) j--; // Decrement right pointer if no alphanumeric if (toupper(s[i]) != toupper(s[j])) return false; // Exit and return error if not match } return true;}
- 别人的代码主要是有isalnum()/toupper()精简,基本逻辑一致.
- 另外i/j的两个while也很漂亮
参考
- isalnum 函数
- toupper 函数
阅读全文
0 0
- leetcode 125. Valid Palindrome | 回文string
- <LeetCode>125.Valid Palindrome 验证回文字符串 Tag:string
- LeetCode[String]: Valid Palindrome
- leetcode-125. Valid Palindrome(验证含有标点符号String是否为回文串)
- leetcode:Valid Palindrome 合法回文
- LeetCode - Valid Palindrome (判断“回文”)
- LeetCode (16) Valid Palindrome (回文)
- leetcode 125. Valid Palindrome-有效回文|双指针
- Leetcode 125. Valid Palindrome 回文验证 解题报告
- leetcode 125. Valid Palindrome 回文数的判断
- String:125. Valid Palindrome
- 125. Valid Palindrome(回文)
- [LeetCode]—Valid Palindrome 回文判断
- 【LeetCode】- Valid Palindrome(正确的回文)
- leetcode 刷题:Valid Palindrome(回文字符串)
- (LeetCode)Valid Palindrome --- 判断回文字符串
- LeetCode Valid Palindrome(验证回文字符串)
- Leetcode-680. Valid Palindrome II(判断回文)
- 常见报错
- 图片的放大和缩小
- TCP/IP 详解卷一学习笔记(四):TCP 连接建立与终止
- QT一些error(C1057、LNK2019、C2146、C3861)的解决
- 通过jQuery Ajax使用FormData对象上传文件
- leetcode 125. Valid Palindrome | 回文string
- 通向架构师的道路(第六天)之漫谈基于数据库的权限系统的设计
- 消息队列的pull与push模式理解
- HDU 4971 A simple brute force problem
- find the longest of the shortest
- ThinkPHP5 支付宝支付扩展库(超简单,超好用~)
- 解决Gosn在集合中int自动转换为duble类型
- char *s 和 char s[] 的区别小结
- druid 的filter设计原理