每天一道leetcode-125验证回文串

  • 2019 年 10 月 4 日
  • 筆記

昨天的题解

题目

每天一道leetcode-125验证回文串 分类:双指针

题目详述

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

输入: "A man, a plan, a canal: Panama" 输出: true 示例 2:

输入: "race a car" 输出: false

题目详解

思路

  • 首先把字母变成小写,然后利用ASC码把数字和小写字母找到,并加到新的字符串中
  • 然后对于这个新的字符串,一个指针在前,一个指针在后,依次比较两者是否相等;

代码(先发图片,再放代码,测试一下,看看会不会乱码)

class Solution {      public boolean isPalindrome(String s) {          s = s.toLowerCase();          char [] charArray = s.toCharArray();          String temp = "";          for(int i=;i<charArray.length;i++)          {              if( ((int)charArray[i] >=  && (int)charArray[i] <= ) || ((int)charArray[i] >=  && (int)charArray[i] <= ))              {                  temp += charArray[i];              }          }          char [] resultArray = temp.toCharArray();          int begin = ;int end = resultArray.length - ;          while(begin < end)          {              if(resultArray[begin] == resultArray[end])              {                  begin++;                  end--;              }else{                  return false;              }          }          return true;       }  }    

代码讲解

  • 3-4变小写,字符串变字符数组
  • 6-12行 利用ASC码找到数字和小写字母的字符,加到新的字符串temp;
  • 15-24一个从头开始一个从尾巴开始,比较是否相等,不相等直接返回falas,都相等true