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         # 遍历完毕,说明是回文。返回结果。
  • 相关阅读:
    Maximum Flow Exhaustion of Paths Algorithm
    ubuntu下安装java环境
    visualbox使用(二)
    vxworks一个超级奇怪的错误(parse error before `char')
    February 4th, 2018 Week 6th Sunday
    February 3rd, 2018 Week 5th Saturday
    February 2nd, 2018 Week 5th Friday
    February 1st, 2018 Week 5th Thursday
    January 31st, 2018 Week 05th Wednesday
    January 30th, 2018 Week 05th Tuesday
  • 原文地址:https://www.cnblogs.com/GoodRnne/p/10908344.html
Copyright © 2011-2022 走看看