Сегодня мы обсудим однопроходное решение задачи о допустимом палиндроме.

Палиндром — это строка, которая при чтении от 0-n или n-0 остается одинаковой. означает, что если вы прочитаете его вперед или назад, оно будет одинаковым.
например, «талат»

Итак, мы можем проверить это за один проход, если сможем одновременно перебирать строку вперед и назад. и проверьте, все ли символы одинаковы или нет. Идея, лежащая в основе этого, может быть реализована методом «двух указателей». один указатель движется вперед по строке, а другой - назад.

В Python это можно сделать следующим образом:

class Solution:
    def isPalindrome(self, s: str) -> bool:
        cleaned_str = re.sub(r'[^a-zA-Z0-9]' , '' , s.lower())
        
        # special case when there is an empty string.
        # empty string is a palindrome too.
        if cleaned_str == "":
            return True

        # we check for each forward and backward.
        # if there is no match, we break and return False
        # otherwise after the loop, we return True
        # because, after loop string must have passed palindrome condition.
        for i in range(len(cleaned_str)):
            if cleaned_str[i] != cleaned_str[-(i+1)]:
                return False
        return True 

        

В приведенном выше коде cleaned_str[i]является указателем вперед и в тот же момент времени cleaned_str[-(i +1)] — это указатель назад.

Потому что, если мы находимся в нулевом индексе, то clean_str[-(i+1)] будет равен -1, что является последним индексом. Следовательно, мы перебираем строку следующим образом.

[email protected]

https://www.linkedin.com/in/danish-baloch-101/