LeetCode-Easy部分中标签为Two Pointers 125. Valid Palindrome
来源:互联网 发布:php命名空间找不到类 编辑:程序博客网 时间:2024/05/21 01:53
原题
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:
1. 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.
题目分析
判断一个字符串是不是回文
字符串。
首、尾指针分别指向有效字符或数字,一一比较,若过程中出现不等,直接返回false,若两个指针碰头了,表示字符首、尾都相等,返回true。
代码实现
public class Solution { public bool IsPalindrome(string s) { int i, j; if (s == string.Empty) return true; for (i = 0, j = s.Length - 1; i < s.Length && j > 0; i++, j--) { while (i < s.Length && !isAlphanumeric(s[i])) i++; while (i < j && !isAlphanumeric(s[j])) j--; if (i >= j) //碰头表示成功! break; if (!isEqual(s[i], s[j])) return false; } return true; }
判断一个字符是不是数字或字母:
private bool isAlphanumeric(char c) { return char.IsLetter(c) || char.IsDigit(c); }
判断字符是否相等,忽略大小写:
private bool isEqual(char c1, char c2) { //要做字符和字母的区别对待,数字和字母字符一定不相等。 if (char.IsDigit(c1) && char.IsLetter(c2)) return false; if (char.IsDigit(c2) && char.IsLetter(c1)) return false; //如果不考虑以上,请参考数字0和字符P的取值。 if (c1 == c2) return true; int c1int = Convert.ToInt32(c1); int c2int = Convert.ToInt32(c2); return Math.Abs(c1int - c2int) == 32; }
标签为Two Pointers的更多题目
http://blog.csdn.net/daigualu/article/details/69236015
2 0
- LeetCode-Easy部分中标签为Two Pointers 125. Valid Palindrome
- LeetCode-Easy部分中标签为Two Pointers的所有题目
- LeetCode-Easy部分中标签为Two Pointers 345. Reverse Vowels of a String
- LeetCode-Easy部分中标签为Two Pointers 283. Move Zeroes
- LeetCode-Easy部分中标签为Two Pointers 88. Merge Sorted Array
- LeetCode-Easy部分中标签为String 20. Valid Parentheses
- LeetCode-Easy部分中标签为 Binary Search 367. Valid Perfect Square
- LeetCode-Easy部分中标签为Math 231. Power of Two
- LeetCode-Easy部分中标签为LinkedList 160. Intersection of Two Linked Lists
- LeetCode-Easy部分中标签为LinkedList 21. Merge Two Sorted Lists
- LeetCode-Easy部分中标签为 Binary Search 349. Intersection of Two Arrays
- LeetCode-Easy部分中标签为 Binary Search 167. Two Sum II
- LeetCode-Easy部分中标签为HashTable的所有题目
- LeetCode-Easy部分中标签为LinkedList的所有题目
- LeetCode-Easy部分中标签为Math的所有题目
- LeetCode-Easy部分中标签为Math 268. Missing Number
- LeetCode-Easy部分中标签为Math 507. Perfect Number
- LeetCode-Easy部分中标签为String的所有题目
- 第一天开博客,庆祝下!
- 理解java的三大特性之多态
- SSLHandshakeException异常处理
- HttpUrlConnection与HttpClient的认识(三)-HttpClient的使用
- unit 8
- LeetCode-Easy部分中标签为Two Pointers 125. Valid Palindrome
- Html.DropDownListFor的选项值为字符型问题
- JQuery 定时循环任务
- 常用的富文本编辑器
- Zookeeper源码环境搭建
- 蓝桥杯_凑算式
- 多线程自增问题
- Java学习之类与对象
- 设计模式 之抽象工厂