def maxx(subs):
al = {}
for sub in subs:
for s in sub:
if not al.has_key(s): al[s] = 1
else: al[s] += 1
maxx = max(al.values())
return filter(lambda item: item[1] == maxx and len(item[0]) > 1, al.iteritems())
def substrs(words):
al = []
for word in words:
subs, ii = [], 0
for i, char in enumerate(word):
try:
if not subs:
subs.append(char)
if i != 0:
ii += 1
elif (char == word[i - 1]) and (char == word[i + 1]):
subs[ii] += char
else:
subs.append(char)
ii += 1
except IndexError:
subs[ii] += char
al.append(subs)
return maxx(al)
if __name__ == '__main__':
print(substrs(("abcbb",
"abcabb",
"bb")))
ZGVmIG1heHgoc3Vicyk6CiAgICBhbCA9IHt9CiAgICBmb3Igc3ViIGluIHN1YnM6CiAgICAgICAgZm9yIHMgaW4gc3ViOgogICAgICAgICAgICBpZiBub3QgYWwuaGFzX2tleShzKTogYWxbc10gPSAxCiAgICAgICAgICAgIGVsc2U6IGFsW3NdICs9IDEKICAgIG1heHggPSBtYXgoYWwudmFsdWVzKCkpCiAgICByZXR1cm4gZmlsdGVyKGxhbWJkYSBpdGVtOiBpdGVtWzFdID09IG1heHggYW5kIGxlbihpdGVtWzBdKSA+IDEsIGFsLml0ZXJpdGVtcygpKQoKCmRlZiBzdWJzdHJzKHdvcmRzKToKICAgIGFsID0gW10KICAgIGZvciB3b3JkIGluIHdvcmRzOgogICAgICAgIHN1YnMsIGlpID0gW10sIDAKICAgICAgICBmb3IgaSwgY2hhciBpbiBlbnVtZXJhdGUod29yZCk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIG5vdCBzdWJzOgogICAgICAgICAgICAgICAgICAgIHN1YnMuYXBwZW5kKGNoYXIpCiAgICAgICAgICAgICAgICAgICAgaWYgaSAhPSAwOgogICAgICAgICAgICAgICAgICAgICAgICBpaSArPSAxCiAgICAgICAgICAgICAgICBlbGlmIChjaGFyID09IHdvcmRbaSAtIDFdKSBhbmQgKGNoYXIgPT0gd29yZFtpICsgMV0pOgogICAgICAgICAgICAgICAgICAgIHN1YnNbaWldICs9IGNoYXIKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc3Vicy5hcHBlbmQoY2hhcikKICAgICAgICAgICAgICAgICAgICBpaSArPSAxCiAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICAgICAgc3Vic1tpaV0gKz0gY2hhcgogICAgICAgIGFsLmFwcGVuZChzdWJzKQogICAgcmV0dXJuIG1heHgoYWwpCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgcHJpbnQoc3Vic3RycygoImFiY2JiIiwKICAgICAgICAgICAgICAgICAgICJhYmNhYmIiLAogICAgICAgICAgICAgICAgICAgImJiIikpKQo=