Python中的有效回文解不起作用

问题描述 投票:-1回答:1

我正在研究一种寻找有效回文的解决方案,其中空字符串将被视为有效回文。该问题将忽略所有非字母数字的情况。以下是一些示例:

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

Input: "race a car"
Output: false

我写了一个解决方案,如果遇到非字母数字字符,该字符将被跳过:

def isPalindrome(self, s):
1        """
2        :type s: str
3        :rtype: bool
4        """
5        """
6        for i in s:
7            if (i.isupper())==True:
8                i.lower()
9        """
10        if len(s)==0:
11            return True
12        print(s)

13        i = 0
14        j = len(s) - 1

15        while(i<=j):  
16            if s[i].isalnum()==False:
17                i+=1
18            elif s[j].isalnum() == False:
19                j-=1
20            elif s[i].islower() != s[j].islower():
21                return False
22            i+=1
23            j-=1
24            
25        return True

但是我一直得到以下结果:

Your input
"A man, a plan, a canal: Panama"
stdout
A man, a plan, a canal: Panama


Output
false

Expected
true

我在做什么错?

python palindrome
1个回答
0
投票

当我即将关闭此标签时,第一个问题突然出现在我身上:

        elif s[i].islower() != s[j].islower():

这是不是您需要的比较。 islower返回字母是否为小写字母。首次尝试将'A'.islower()(即False)与'a'.islower()(即True)进行比较时,这将失败。您需要的比较是

        elif s[i].lower() != s[j].lower():

即将两个字母都小写并进行比较。

在索引处理中还有更多问题,但是,这和一些print命令应该会让您动起来。

© www.soinside.com 2019 - 2024. All rights reserved.