image.png

解题思路:双指针

  • 设置左、右双指针,向中间判断;
  • 跳过非数字字母的字符;
  • 将字母全部转化为小写体,之后判断。
  • java用了库函数,python纯自己实现(运行时间不太理想)。
  1. public boolean isPalindrome(String s) {
  2. int i=0,j=s.length()-1;
  3. while(i<j){
  4. while(i<j && !Character.isLetterOrDigit(s.charAt(i))) i++;
  5. while(i<j && !Character.isLetterOrDigit(s.charAt(j))) j--;
  6. if(Character.toLowerCase(s.charAt(i))!=Character.toLowerCase(s.charAt(j))) return false;
  7. i++;j--;
  8. }
  9. return true;
  10. }