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         # 遍历完毕,说明是回文。返回结果。
  • 相关阅读:
    初识你Swift【上篇】
    初识你Swift【下篇】
    单元测试基础
    时间都去哪了?
    iOS App上线的秘密
    mysql系列——DQL常见操作汇总(四)
    Get和Post请求有什么区别?
    SpringBoot2+WebSocket之聊天应用实战
    OCR识别
    mysql系列——子查询(非常重要)(八)
  • 原文地址:https://www.cnblogs.com/GoodRnne/p/10908344.html
Copyright © 2011-2022 走看看