zoukankan      html  css  js  c++  java
  • 【LeetCode每天一题】 Valid Palindrome(有效的回文)

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

    Note: For the purpose of this problem, we define empty string as valid palindrome.

    Example 1:

    Input: "A man, a plan, a canal: Panama"
    Output: true
    

    Example 2:

    Input: "race a car"
    Output: false

    思路

      从例子中可以看出,在进行对比的时候会遇到非字母和数字的字符,这个和之前做的回文判断很相似,只不过这里需要对当前位置的异常情况进行判断和处理。就是当前字符如果是".  :  ,"等等时,需要将下标移动到下一位在进行判断。在python中字符串有一个方法就是isalnum()用来判断当前字符是否是字母和数字。其他的和之前做的回文判断都一样。时间复杂度为O(n),空间复杂度为O(1)。
    解决代码

    
    
     1 class Solution(object):
     2     def isPalindrome(self, s):
     3         """
     4         :type s: str
     5         :rtype: bool
     6         """
     7         if not s or len(s) == 1:   # 空或者只有一个时直接返回结果
     8             return True
     9         start, end = 0, len(s) -1   # 首尾指针
    10         while start < end:
    11             while start < end and not s[start].isalnum():  # 判断当前字符是否是字符或者数字
    12                 start += 1 
    13             while end > start and not s[end].isalnum():    # 同上
    14                 end -= 1
    15                 
    16             if s[start].lower() != s[end].lower():  # 如果当前不相等,直接返回结果
    17                 return False
    18             start += 1
    19             end -= 1
    20         return True         # 遍历完毕,说明是回文。返回结果。
  • 相关阅读:
    SQL Server 2005高可用性之镜像功能
    Linux的常见问题解答和管理技巧
    安装sharepoint server 2007步骤
    CISCO 中对OSI的解释
    CISCO 2600 密码恢复
    三层交换机与路由器的比较
    PHP的注释
    php的变量、常量和数据类型
    操作符与控制结构
    【1】淘宝sdk装修入门引言
  • 原文地址:https://www.cnblogs.com/GoodRnne/p/10908344.html
Copyright © 2011-2022 走看看