Problem Statement
- 1) Multiplication denotes 'and'ing. For example, ab means a AND b.
- 2) Addition denotes 'or'ing. For example, ab+b means (a AND b) OR b. As usual, multiplication has higher precedence than addition.
- 3) If a variable is capitalized, it is negated. For example, Ab means (NOT a) AND b. As seen, negation has higher precedence than multiplication.
<S> := <Term> | <S>+<Term> <Term> := a | b | A | B | <Term><Term>Two boolean expressions have the same value if and only if they agree regardless of the truth values of a and b. You will return the shortest
Definition
- Class:
- ShortBooleanExp
- Method:
- getFirst
- Parameters:
- String
- Returns:
- String
- Method signature:
- String getFirst(String exp)
- (be sure your method is public)
Constraints
- exp will contain between 1 and 50 characters inclusive.
- exp will adhere to the grammar given above.
Examples
"AB+ab+abaB"
Returns: "AB+ab"
"b+AB+bB+B+aabbabab"
Returns: "True"
"bB+Aa+baAB"
Returns: "False"
"a+b+ab+ABa"
Returns: "a+b"
"ababababababababaaaaaaaaa+bbbbbbbbbbbbbbbb"
Returns: "b"
"AB+Ab+aB"
Returns: "A+B"
"AB"
Returns: "AB"
"Ab"
Returns: "Ab"
"A"
Returns: "A"
"Ba"
Returns: "Ba"
"B"
Returns: "B"
"Ab+Ba"
Returns: "Ab+Ba"
"A+B"
Returns: "A+B"
"ab"
Returns: "ab"
"AB+ab"
Returns: "AB+ab"
"b"
Returns: "b"
"A+b"
Returns: "A+b"
"a"
Returns: "a"
"B+a"
Returns: "B+a"
"a+b"
Returns: "a+b"
"ba+BAB+AbabababA+BabBaBAbA+BA+bababab+Ababab"
Returns: "AB+ab"
"AB"
Returns: "AB"
"Ab"
Returns: "Ab"
"A"
Returns: "A"
"Ba"
Returns: "Ba"
"B"
Returns: "B"
"Ab+Ba"
Returns: "Ab+Ba"
"A+B"
Returns: "A+B"
"ab"
Returns: "ab"
"AB+ab"
Returns: "AB+ab"
"b"
Returns: "b"
"A+b"
Returns: "A+b"
"a"
Returns: "a"
"B+a"
Returns: "B+a"
"a+b"
Returns: "a+b"
"abA+Ba+ba+a+BabababA+bA+BA+ab+aB+aB+aB+abab"
Returns: "True"
"ABbbA+BbABaBaBA+bBba+AbBBbbBBaAB+BAAaBabbbaabba+Aa"
Returns: "False"
"aaaaAaaBaBbaabAAb+ABABAA+baaBbbabA+bBBbaAA+bAaBbAb"
Returns: "AB"
"bAb+bBAAabBaabB+bBAa+bbabbABBAbA+bBabBBA+abaBb+bBb"
Returns: "Ab"
"A+AbaabaaaB+aaaaAAbbB+aA+bAAaBB+bbabbA+ABbBABB+bBb"
Returns: "A"
"aBBa+aaA+ABBbbBaAaBbBA+BbAB+abAB+bB+bAAAABabB+AaBb"
Returns: "Ba"
"AaB+bAbBab+aBabb+BBaaabB+Bb+bAabbA+AAABa+BB+AAbaAA"
Returns: "B"
"Abb+ABBAb+aA+baBaAaaBBBaaBaaBBABaa+Ab+bbAbA+BAb+aB"
Returns: "Ab+Ba"
"BaA+BAAa+BBbAB+aB+BA+Ba+aabB+A+abbBaaABBBA+AbBaAAB"
Returns: "A+B"
"ab+AAAa+aABaAbA+BbAabBAbAa+BaABBAbbAaBABAbaaBABaAb"
Returns: "ab"
"bbBAAaBbbbBAababaBAABB+bbaa+ABB+BaAb+bAaBBbaaABAAb"
Returns: "AB+ab"
"BbAAA+bBAaaA+ba+baab+aBA+baAb+bBAbaB+b+aBabBaB+Aaa"
Returns: "b"
"b+BAbBbbABaB+bbbBA+bbaBb+aABaA+baBa+baAa+A+babaBba"
Returns: "A+b"
"baB+ABa+BbBba+BaBbBaaAbaBBa+baaabAAABBabABAAAAAA+a"
Returns: "a"
"a+ABaaBAaBBb+aB+aBABAAaa+aABaabAABA+a+AaAB+B+BAb+a"
Returns: "B+a"
"aAbbaaBAAA+ABAAabbAaaABABBBbAaaa+bBBa+a+Ab+BbAbBaA"
Returns: "a+b"
"Ba+ba+AAb+Aa+B+aAbb+aaaabBbBAaaBBAB+AAa+aAaBbaBAAB"
Returns: "True"
"AB+Ab"
Returns: "A"
"aB+bA+ba"
Returns: "a+b"
"Ab+Ba"
Returns: "Ab+Ba"
"Ab+aB"
Returns: "Ab+Ba"
"aB"
Returns: "Ba"
"aBAB+aBaB+aBAb+aBab"
Returns: "Ba"
"a+B"
Returns: "B+a"
"A+aB"
Returns: "A+B"
"Ba"
Returns: "Ba"
"B+a"
Returns: "B+a"
"A+B"
Returns: "A+B"
"A+Ba"
Returns: "A+B"
"aB+BA+ab"
Returns: "B+a"
"aB+b"
Returns: "a+b"
"Ab+Aa"
Returns: "Ab"
"aB+Ba+ab"
Returns: "a"
"ab"
Returns: "ab"
"ababababababababaaaaaaaaa+bbbbbbbbbbbbbbbba"
Returns: "ab"
"Ab+a"
Returns: "a+b"
"BA+ba+Ba"
Returns: "B+a"
"aB+ab"
Returns: "a"
"ab+Ab+AB"
Returns: "A+b"
"Aaaaaaaaaaa+A+B"
Returns: "A+B"
"BA+ba"
Returns: "AB+ab"
"AB+Ab"
Returns: "A"
"A+b"
Returns: "A+b"
"AB+ab+Ab+Ba"
Returns: "True"
"Aaaaaaaaa+A+B"
Returns: "A+B"
"Aaaaaaaaa+Ab+Ba"
Returns: "Ab+Ba"
"ab+aB+Ab+AB"
Returns: "True"
"AB+ab+Ab"
Returns: "A+b"
"aB+bA"
Returns: "Ab+Ba"