这是一个关于Python的问题。答案应该具有O(n)时间复杂度且不使用额外的内存。我会得到一个字符串作为输入,需要将其分类为回文或非回文(回文是指一种可以从左到右和从右到左读取的单词或短语,例如“level”)。在输入中可能存在标点符号和单词之间的间隔。
例如"I. did,,, did I????" 主要目标是确定输入是否为回文。
当我尝试解决这个问题时,遇到了几个挑战。当我尝试删除非字母数字时,
当我尝试解决这个问题时,遇到了几个挑战。当我尝试删除非字母数字时,
for element in string:
if ord(element) not in range(97, 122):
string.remove(element)
if ord(element) == 32:
string.remove(element)
我使用O(n^2)的复杂度,因为对于字符串中的每个元素,我都使用了remove函数,它本身具有O(n)的复杂度,其中n是列表的长度。我需要帮助优化消除非字母字符的部分,使其具有O(n)的复杂度。
此外,当我们将空格视为标点符号时,我知道如何检查单词是否为回文,但我的方法使用了额外的内存。
range(97, 122)
不包括字母z
。 - user3386109