【问题标题】:Checking if a string is palindrome [closed]检查字符串是否是回文[关闭]
【发布时间】:2021-09-10 19:15:56
【问题描述】:

所以我正在尝试编写一个函数来检查一个字符串是否是回文(如果它向后拼写相同的回文例如:hannah

这是我在网上看到的一个解决方案,我不太明白,任何简单的解释都将不胜感激

def isPalindrome(string):
    left_pos = 0
    right_pos = len(string) - 1
    
    while right_pos >= left_pos:
        if not string[left_pos] == string[right_pos]:
            return False
        left_pos += 1
        right_pos -= 1
    return True
    
print(isPalindrome('hannah')) 

编辑:抱歉我不够清楚,我主要不理解while循环中设置的条件和if语句背后的逻辑。

【问题讨论】:

  • 哪一部分你不明白?
  • 哪一部分你不明白?里面的一切都很基础。
  • not x == yx != y 的一种尴尬且不常见的写作方式。 (和not (x == y)一样,不是(not x) == y,因为not的优先级低。)
  • 如果字符串 = 'racecar'。您尝试开始将 s[0] 与 s[-1] 进行比较并从中取得进展...您可以通过在 pythontutor.com 中运行此程序来直观地看到正在发生的事情
  • 请注意,这不会将'Hannah' 报告为回文,因为'H' 不等于'h'

标签: python string palindrome


【解决方案1】:

它将最后一个字符与第一个字符进行比较,并在字符串内移动如下:

hannah
^    ^

检查两个字母是否相等:(如果不相等则返回 False) 将索引移动 1

hannah
 ^  ^

做同样的检查

hannah
  ^^

此时右索引 = 左索引

在这种情况下返回 True

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 2019-05-02
    • 2022-06-14
    • 2012-04-05
    相关资源
    最近更新 更多