标签:
题目链接:https://oj.leetcode.com/problems/valid-palindrome/
问题:
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.
Subscribe to see which companies asked this question.
针对本题可能存在的疑惑
1)空字符串是否为回文?
这里认为空字符串为回文
解题思路:
两个指针 i, j 从字符串两端向中心移动,比较指针指向的字符(数字)
1 public boolean isPalindrome(String s){ 2 int i = 0; 3 int j = s.length() - 1; 4 while(i < j){ 5 while(i < j && !Character.isLetterOrDigit(s.charAt(i))) 6 i++; 7 while(i < j && !Character.isLetterOrDigit(s.charAt(j))) 8 j--; 9 if(Character.toLowerCase(s.charAt(i)) != Character.toLowerCase(s.charAt(j))) { 10 return false; 11 } 12 i++; 13 j--; 14 } 15 return true; 16 }
时间复杂度:O(n),空间复杂度:O(1)
标签:
原文地址:http://www.cnblogs.com/momo-fun/p/5779609.html