def checkAB(s):
if len(s) == 0 or s[0] != 'a':
return False
def loop(val):
if len(val) == 0:
return True
if val[0] == 'a':
return loop(val[1:])
if len(val) > 2 and val[0] == 'b' and val[1] == 'b' and val[2] == 'b':
return False
if len(val) == 1 and val[0] == 'b':
return False
if val[0] == 'b' and val[1] == 'b':
return loop(val[2:])
else:
return False
return loop(s)
strings = [
"a",
"aaa",
"abb",
"abba",
"abbabb",
"abbabba",
"aaabbaabb",
"abbabbabbaaa",
"abbaaaaabbaaaaababbbbabbababababbba"
"aba",
"baba",
"baabb",
"aabbbaa",
"abbbb",
"abbb",
"abbbbbb",
"aabbabbbb",
"aabbabbab",
"ababab",
"bba",
"ababab",
"bba",
"aaab",
"aaabbb",
"aaabbbb",
"abbbbbbb"
]
for s in strings:
print(f"{s} --> {checkAB(s)}")
ZGVmIGNoZWNrQUIocyk6CiAgICBpZiBsZW4ocykgPT0gMCBvciBzWzBdICE9ICdhJzoKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgbG9vcCh2YWwpOgogICAgICAgIGlmIGxlbih2YWwpID09IDA6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgaWYgdmFsWzBdID09ICdhJzoKICAgICAgICAgICAgcmV0dXJuIGxvb3AodmFsWzE6XSkKICAgICAgICBpZiBsZW4odmFsKSA+IDIgYW5kIHZhbFswXSA9PSAnYicgYW5kIHZhbFsxXSA9PSAnYicgYW5kIHZhbFsyXSA9PSAnYic6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGlmIGxlbih2YWwpID09IDEgYW5kIHZhbFswXSA9PSAnYic6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGlmIHZhbFswXSA9PSAnYicgYW5kIHZhbFsxXSA9PSAnYic6CiAgICAgICAgICAgIHJldHVybiBsb29wKHZhbFsyOl0pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICByZXR1cm4gbG9vcChzKQoKc3RyaW5ncyA9IFsKICAgICJhIiwKICAgICJhYWEiLAogICAgImFiYiIsCiAgICAiYWJiYSIsCiAgICAiYWJiYWJiIiwKICAgICJhYmJhYmJhIiwKICAgICJhYWFiYmFhYmIiLAogICAgImFiYmFiYmFiYmFhYSIsCiAgICAiYWJiYWFhYWFiYmFhYWFhYmFiYmJiYWJiYWJhYmFiYWJiYmEiCiAgICAiYWJhIiwKICAgICJiYWJhIiwKICAgICJiYWFiYiIsCiAgICAiYWFiYmJhYSIsCiAgICAiYWJiYmIiLAogICAgImFiYmIiLAogICAgImFiYmJiYmIiLAogICAgImFhYmJhYmJiYiIsCiAgICAiYWFiYmFiYmFiIiwKICAgICJhYmFiYWIiLAogICAgImJiYSIsCiAgICAiYWJhYmFiIiwKICAgICJiYmEiLAogICAgImFhYWIiLAogICAgImFhYWJiYiIsCiAgICAiYWFhYmJiYiIsCiAgICAiYWJiYmJiYmIiCl0KCmZvciBzIGluIHN0cmluZ3M6CiAgICBwcmludChmIntzfSAtLT4ge2NoZWNrQUIocyl9IikKCg==