如何获取文本中的回文列表?
How to get list of palindrome in text?
我有以下面试题,可能需要遍历整个字符串。
问题 我搜索了找到问题,大多数人都是这样做的def palindrome(s): return s==s[::-1]
但是这个任务是不同的?
palindrome是一个像'mam','dad'一样可以从两个方向读的单词。您的任务是获取给定字符串中 回文 的列表。
def palindrome(s):
stack = []
return ['aaa']
例子
palindrome('aaa') #['aaa']
palindrome('abcbaaaa') #['abcba','aaaa']
palindrome('xrlgabccbaxrlg') #['abccba']
palindrome('abcde') #['']
让我们尽量避免检查所有可能的组合:)。我的想法是,从四肢着手,收敛:
def palindrome(s):
out = [''] #we need the list to not be empty for the following check
for main_start in range(len(s) - 1):
for main_end in range(len(s) - 1, main_start, -1):
start = main_start
end = main_end
while (end - start) > 0:
if s[start] == s[end]: ##may be palindrome
start += 1
end -= 1
else:
break
else:
if s[main_start:main_end + 1] not in out[-1]: #ignore shorter ("inner") findings
out.append(s[main_start:main_end + 1])
return out[1:] #skip the dummy item
我有以下面试题,可能需要遍历整个字符串。
问题 我搜索了找到问题,大多数人都是这样做的
def palindrome(s): return s==s[::-1]
但是这个任务是不同的?palindrome是一个像'mam','dad'一样可以从两个方向读的单词。您的任务是获取给定字符串中 回文 的列表。
def palindrome(s):
stack = []
return ['aaa']
例子
palindrome('aaa') #['aaa']
palindrome('abcbaaaa') #['abcba','aaaa']
palindrome('xrlgabccbaxrlg') #['abccba']
palindrome('abcde') #['']
让我们尽量避免检查所有可能的组合:)。我的想法是,从四肢着手,收敛:
def palindrome(s):
out = [''] #we need the list to not be empty for the following check
for main_start in range(len(s) - 1):
for main_end in range(len(s) - 1, main_start, -1):
start = main_start
end = main_end
while (end - start) > 0:
if s[start] == s[end]: ##may be palindrome
start += 1
end -= 1
else:
break
else:
if s[main_start:main_end + 1] not in out[-1]: #ignore shorter ("inner") findings
out.append(s[main_start:main_end + 1])
return out[1:] #skip the dummy item