zoukankan      html  css  js  c++  java
  • [leetcode]Valid Palindrome

    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. 

    算法思路:

    思路1:首尾两指针,在原来的字符串的基础上,进行扫描判断。空间复杂度O(1),时间O(n),一次扫描。

     1 public class Solution {
     2       public boolean isPalindrome(String s) {
     3         s = s.trim().toLowerCase();
     4         int i = 0;
     5         int j = s.length() - 1;
     6         while(i < s.length() && !isValid(s.charAt(i))) i++;
     7         while(j >= 0 && !isValid(s.charAt(j))) j--;
     8         while(i <= j){
     9             char a = s.charAt(i);
    10             char b = s.charAt(j);
    11             if(a != b){
    12                 return false;
    13             }else{
    14                 i++;
    15                 while(i < s.length() && !isValid(s.charAt(i))) i++;
    16                 j--;
    17                 while(j >= 0 && !isValid(s.charAt(j))) j--;
    18             }
    19         }
    20         return true;
    21     }
    22     private boolean isValid(char c){
    23         if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') ) return true;
    24         return false;
    25     }
    26 }

    思路2:第一遍扫描,将合法字符保留在另一个字符串s中,第二遍扫描s。空间复杂度O(1),时间复杂度O(n),两次扫描。

    比较简单,不实现了

  • 相关阅读:
    爬虫 比较好的视频推荐
    Scrapy爬取某装修网站部分装修效果图
    scrapy爬取阳光电影网全站资源
    爬虫练手实例
    Scrapy框架详解
    淘宝商品信息定向爬虫实例介绍
    Python基础第20天
    Python基础第19天
    Python基础第18天
    Python基础第17天
  • 原文地址:https://www.cnblogs.com/huntfor/p/3868236.html
Copyright © 2011-2022 走看看