Действительное решение Palindrome в Python не работает - PullRequest
0 голосов
/ 09 октября 2019

Я работаю над решением для поиска действительного палиндрома, где пустая строка будет считаться допустимым палиндромом. Этот вопрос игнорирует любые случаи, которые не являются буквенно-цифровыми. Ниже приведены некоторые примеры:

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

Что я делаю не так?

1 Ответ

0 голосов
/ 09 октября 2019

Первая проблема возникла у меня, когда я собирался закрыть эту вкладку:

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

Это , а не сравнение, которое вам нужно. islower возвращает, является ли буква строчной. Это не удастся с вашей первой попытки, сравнивая 'A'.islower() (что составляет False) с 'a'.islower() (что составляет True). Вам нужно сравнение

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

, т.е. переведите обе буквы в нижний регистр и сравните их.

В обработке вашего индекса есть больше проблем, но это - и несколько print команды - должны заставить вас двигаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...