找到最长尾随子字符串的长度

时间:2015-05-12 19:29:37

标签: python python-2.7

我需要提取在给定字符串末尾结束的最长子字符串的长度,并且还包含完全相同的字符。

例如,给定"aaabbbb"所需的子字符串为"bbbb" length = 4

虽然我可以想到使用while / for循环执行此操作的许多方法,但我想知道是否有更优雅的方法来执行此操作。有没有用于此目的的模块?我不想使用for循环来查找此子字符串。有可能吗?

2 个答案:

答案 0 :(得分:6)

>> s = "aaabbbb"
>> len(s) - len(s.rstrip(s[-1]))
4

来自rstrip

的文档字符串
  

S.rstrip([chars]) - >字符串或unicode

     

返回字符串S的副本,删除尾部空格。       如果给出了chars而不是None,则删除chars中的字符。       如果chars是unicode,则在剥离之前S将转换为unicode

因此,此解决方案采用原始字符串的长度,并从中减去字符串的长度,其中所有相同的最后一个字符都被删除。

答案 1 :(得分:1)

您可以尝试使用re模块和re.escape

>>> s = "aaabbbb"
>>> import re
>>> pat = re.escape(s[-1]) + '*$'
>>> pat
'b*$'
>>> re.search(pat,s).group()
'bbbb'

其他情况

>>> s = 'bbbabbbbb'
>>> re.search(pat,s).group()
'bbbbb'
>>> s = 'abcd'
>>> re.search(pat,s).group()
'd'

然后,您可以使用len查找长度。