fork(1) download
  1. def checkAB(s):
  2. if len(s) == 0 or s[0] != 'a':
  3. return False
  4.  
  5. def loop(val):
  6. if len(val) == 0:
  7. return True
  8. if val[0] == 'a':
  9. return loop(val[1:])
  10. if len(val) > 2 and val[0] == 'b' and val[1] == 'b' and val[2] == 'b':
  11. return False
  12. if len(val) == 1 and val[0] == 'b':
  13. return False
  14. if val[0] == 'b' and val[1] == 'b':
  15. return loop(val[2:])
  16. else:
  17. return False
  18. return loop(s)
  19.  
  20. strings = [
  21. "a",
  22. "aaa",
  23. "abb",
  24. "abba",
  25. "abbabb",
  26. "abbabba",
  27. "aaabbaabb",
  28. "abbabbabbaaa",
  29. "abbaaaaabbaaaaababbbbabbababababbba"
  30. "aba",
  31. "baba",
  32. "baabb",
  33. "aabbbaa",
  34. "abbbb",
  35. "abbb",
  36. "abbbbbb",
  37. "aabbabbbb",
  38. "aabbabbab",
  39. "ababab",
  40. "bba",
  41. "ababab",
  42. "bba",
  43. "aaab",
  44. "aaabbb",
  45. "aaabbbb",
  46. "abbbbbbb"
  47. ]
  48.  
  49. for s in strings:
  50. print(f"{s} --> {checkAB(s)}")
  51.  
  52.  
Success #stdin #stdout 0.02s 9280KB
stdin
Standard input is empty
stdout
a --> True
aaa --> True
abb --> True
abba --> True
abbabb --> True
abbabba --> True
aaabbaabb --> True
abbabbabbaaa --> True
abbaaaaabbaaaaababbbbabbababababbbaaba --> False
baba --> False
baabb --> False
aabbbaa --> False
abbbb --> False
abbb --> False
abbbbbb --> False
aabbabbbb --> False
aabbabbab --> False
ababab --> False
bba --> False
ababab --> False
bba --> False
aaab --> False
aaabbb --> False
aaabbbb --> False
abbbbbbb --> False