Problem Statement
Chandan loves to play with strings. He just learned a new operation: inserting one string X into another string Y.
When inserting X into Y, it is also allowed to place X at the beginning or at the end of Y. For example, there are exactly five ways how to insert the string "ab" into the string "????": you can produce one of the strings "ab????", "?ab???", "??ab??", "???ab?", and "????ab".
According to Chandan, a good string is a string that can be constructed in the following way: Initially, he takes the empty string "". Then, he performs a sequence of zero or more steps. In each step he inserts the string "ab" anywhere into the current string.
According to the above definition, the strings "ab", "aabb", and "aababb" are good while the strings "aab", "ba", and "abbb" are not good.
Chandan's friend Ravi came up with a
Definition
- Class:
- GoodString
- Method:
- isGood
- Parameters:
- String
- Returns:
- String
- Method signature:
- String isGood(String s)
- (be sure your method is public)
Constraints
- s will contain between 1 and 50 characters, inclusive.
- Each element of s will be either 'a' or 'b'.
Examples
"ab"
Returns: "Good"
Chandan can start with an empty string and insert "ab".
"aab"
Returns: "Bad"
"aabb"
Returns: "Good"
Chandan can construct this string as follows: "" -> "ab" -> "aabb".
"ababab"
Returns: "Good"
One way to construct this string is to append "ab" to the current string three times.
"abaababababbaabbaaaabaababaabbabaaabbbbbbbb"
Returns: "Bad"
"aaaaaaaabbbaaabaaabbabababababaabbbbaabbabbbbbbabb"
Returns: "Good"
"a"
Returns: "Bad"
"b"
Returns: "Bad"
"bb"
Returns: "Bad"
"ab"
Returns: "Good"
"ba"
Returns: "Bad"
"aa"
Returns: "Bad"
"bbbb"
Returns: "Bad"
"abbb"
Returns: "Bad"
"babb"
Returns: "Bad"
"aabb"
Returns: "Good"
"bbab"
Returns: "Bad"
"abab"
Returns: "Good"
"baab"
Returns: "Bad"
"aaab"
Returns: "Bad"
"bbba"
Returns: "Bad"
"abba"
Returns: "Bad"
"baba"
Returns: "Bad"
"aaba"
Returns: "Bad"
"bbaa"
Returns: "Bad"
"abaa"
Returns: "Bad"
"baaa"
Returns: "Bad"
"aaaa"
Returns: "Bad"
"aaabbb"
Returns: "Good"
"aaaabbbb"
Returns: "Good"
"aaabbababb"
Returns: "Good"
"aaaababbbabb"
Returns: "Good"
"aaaaabbbbbaabb"
Returns: "Good"
"aaabaaababbbabbb"
Returns: "Good"
"aaabaababbaababbbb"
Returns: "Good"
"abaaaaaabababbbbabbb"
Returns: "Good"
"aaaabbbabb"
Returns: "Good"
"aaaabaaabaabbbabbbbb"
Returns: "Good"
"aaaabbaaaaababbabaaababbbbbbbb"
Returns: "Good"
"aaaaaaabbbabaaaaaaabbaaaabbbbabbbbbbbbbb"
Returns: "Good"
"aaaaaaaaaabababbbababbbaaaabaabbabbababbbbabbbabbb"
Returns: "Good"
"aaaaabaabaaaabaabaabaaabbbbbbbabbabbbbbb"
Returns: "Good"
"aabaaaaaabaaabbabaaabbbbbbbababbaabbabbb"
Returns: "Good"
"aaaaaabaaabbbaabaabbaababbbabababbbababbbb"
Returns: "Good"
"aaaabbaabaaaaaabbaaaabbaaabababbbbbbbbbbbb"
Returns: "Good"
"aaaabaaababbaaaabaaaabbaabbbbababbbabbabbbbb"
Returns: "Good"
"aabaaaaaaaababbabaaabababaabbbabbbbabbabbbbb"
Returns: "Good"
"aabaaaaaabaabbaaabbaabbabbbbaabbabababbbbababb"
Returns: "Good"
"aaaabaaaaaababababaabaabababbabbbbaabbbbbbbabb"
Returns: "Good"
"aabaabaabaaaaaaaabaabbaabbbbabbaabbbbbbabbaabbbb"
Returns: "Good"
"aaaaaaabaababbaaaabaabbabbaaaababbbbbbaabbbbbbbb"
Returns: "Good"
"aaaaaaaabbbaaabaaabbabababababaabbbbaabbabbbbbbabb"
Returns: "Good"
"aaabaaaabbbaaabaabaabaabbabaabbaabbabbbaabbbabbbbb"
Returns: "Good"
"babaab"
Returns: "Bad"
"abbaaabb"
Returns: "Bad"
"bbbaaabaab"
Returns: "Bad"
"abaabababbab"
Returns: "Good"
"babbaabaaaabbb"
Returns: "Bad"
"babbbbaaaabaabab"
Returns: "Bad"
"aababbabbaabbaaabb"
Returns: "Bad"
"baaaaaaabbbaaabbbbbb"
Returns: "Bad"
"bbaababaab"
Returns: "Bad"
"bbabbaabababbaabaaab"
Returns: "Bad"
"baabaabbabaababaabaabaababbbbb"
Returns: "Bad"
"aabbabbbbbaaababaabbaabaaabbbbabbaabaaab"
Returns: "Bad"
"bababbabababbbaabbababbbaabababbaabbaababaaaabaaab"
Returns: "Bad"
"baababbbaaaabaaaabbabbbaababbaabababbbab"
Returns: "Bad"
"bbaabaabbaabbabbbbaaaaaabaaabaabbabbbbab"
Returns: "Bad"
"abaababababbaabbaaaabaababaabbabaaabbbbbbb"
Returns: "Good"
"babababaaabbbaababababbbbaababaabaaababbab"
Returns: "Bad"
"baaabaabbaaabbbbbbabbabaabaababbaabbaaaaabbb"
Returns: "Bad"
"abaaaaababbaaabbaaabbbabaababbbabbbbbbbaaaab"
Returns: "Bad"
"babaaaaaabaaabbababbabbbababbaabbabbbbaaaabbab"
Returns: "Bad"
"abbbbabbaaaaabbaababaabbabaaababaababbbbbabaab"
Returns: "Bad"
"ababbbaababbaababaababaabaaaabababaaabbbabbbabbb"
Returns: "Bad"
"abbbbabaaabbbbaabbaabbbbbaababbaaaabbbaaaaabaaab"
Returns: "Bad"
"ababbaababaabbabbabbbaabaaabbaaaabbaaaabbaabbbbbab"
Returns: "Bad"
"baabbbbabbabbababaaabbaaaabbabbbbaaabbaaaaaaababbb"
Returns: "Bad"
"bbbbbbaaaaaa"
Returns: "Bad"
"ababba"
Returns: "Bad"
"bbbaaa"
Returns: "Bad"
"abbaab"
Returns: "Bad"
"baabb"
Returns: "Bad"
"abbbaaab"
Returns: "Bad"
"aaaabb"
Returns: "Bad"