【问题标题】:Trying to test if the given string is a palindrome by words尝试通过单词测试给定的字符串是否是回文
【发布时间】:2020-05-07 03:40:11
【问题描述】:

您好,我正在尝试实现此输出。我试图通过比较第一个单词和最后一个单词、第二个单词和倒数第二个单词来查看字符串是否是回文。

国王,你很高兴你是国王是回文(或者这就是我想要达到的结果),因为第一个词与最后一个词(即国王)相似,第二个词与第二个词相似最后一个词(即是),第三个词类似于第三个最后一个词(即你)。因此,输出应该为真。 (这是我的作业要求)

我想要实现的输出:[True, False] 我得到的输出:[False]

【问题讨论】:

  • 其实不是回文

标签: python stack palindrome


【解决方案1】:

您需要执行split 才能进行逐字比较。

另外,从bad_character 中取出' ' 并修复一些缩进即可:

def palindrome_word(a_str):
    outputlist = []
    bad_character = ['?', ',']
    for element in a_str:
        for words in bad_character:
            element = element.replace(words, '')
        element = element.lower().split()
        outputlist.append(element == element[::-1])
    return outputlist

或者使用re:

import re

def palindrome_word_re(a_str):
    outputlist = []
    for element in a_str:
        element = element.lower()
        words = re.findall('\w+', element)
        outputlist.append(words == words[::-1])
    return outputlist

两个输出:

palindrome_word(my_string)
palindrome_word_re(my_string)

[True, False]

【讨论】:

    【解决方案2】:

    这是一个解决方案

    def palindrome_word(a_str):
        outputlist = []
        bad_character = ['?', ',']
        for element in a_str:
            for words in bad_character:
                element = element.replace(words, '')
            element = element.lower()
            result = (element.split())[::-1] == element.split()
            outputlist.append(result)
        return outputlist
    
    my_string=["King, are you glad you are king?", "Hello Bye"]
    print(palindrome_word(my_string))
    

    外出

    [True, False]
    

    【讨论】:

      【解决方案3】:

      另一种方法-

      def palindrome_word(a_str):
          import re
          outputlist = []
          for element in a_str:
              str_arr = re.findall('\w+', element.lower())
              is_palindrome = True
              for i in range(int(len(str_arr)/2)):
                  if str_arr[i] != str_arr[-i-1]:
                      is_palindrome = False
                      break
              outputlist.append(is_palindrome)
          return outputlist
      
      my_string=["King, are you glad you are king?", "Hello Bye"]
      print(palindrome_word(my_string))
      

      输出

      [True, False]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-21
        • 2013-08-05
        • 2013-07-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多