Problem Statement
- <NUMBER> ::= <ONES> | <TEEN> | <TENS> | <TENS>-<ONES>
- <ONES> ::= one | two | three | four | five | six | seven | eight | nine
- <TEEN> ::= ten | eleven | twelve | thirteen | fourteen | fifteen | sixteen | seventeen | eighteen | nineteen
- <TENS> ::= twenty | thirty | forty | fifty | sixty | seventy | eighty | ninety
The method should return -1 if there is more than one value that is closest to number.
Definition
- Class:
- Speller
- Method:
- value
- Parameters:
- String
- Returns:
- int
- Method signature:
- int value(String number)
- (be sure your method is public)
Constraints
- number will contain between 1 and 20 characters inclusive.
- Each character in number will be between ASCII 33 and ASCII 126 inclusive.
Examples
"forty-two"
Returns: 42
"FORTY-TWO"
Returns: -1
"forty-two" and " fifty-two" are both a distance of 8 from "FORTY-TWO". No other number is closer.
"eightene"
Returns: 18
"eighteen" is 2 misspelled letters away from "eightene"
"one-hundred"
Returns: -1
"fifty-fifty"
Returns: 58
"fi"
Returns: -1
All numbers are infinitely far away, since there are no 2 character strings that represent numbers.
"thirty"
Returns: 30
"fortytwo"
Returns: 14
"@-x"
Returns: 6
"f#$!"
Returns: -1
"f()e"
Returns: 5
"abcdefghejklm"
Returns: 78
"abcdefghijkl"
Returns: -1
"abcdefeeeee"
Returns: -1
"a-cndefgwi"
Returns: 22
"42"
Returns: -1
"thirty-fiur"
Returns: 34
"ninety-fine"
Returns: -1
"nin***-nine"
Returns: 99
"two-twenty"
Returns: -1
"four-fourty"
Returns: 43
"six-ninety"
Returns: 69
"six-seven"
Returns: -1
"four-eleven"
Returns: 47
"forty-two"
Returns: 42
"eighty-one"
Returns: 81
"seven-een"
Returns: 17
"zero"
Returns: -1
"twentyxsix"
Returns: 26
"th-rty-four"
Returns: 34
"fortyatwo"
Returns: 42
"twenty"
Returns: 20
"FORTY-TWO"
Returns: -1
"ninete"
Returns: 90
"three"
Returns: 3
"sev-nty"
Returns: 70
"o"
Returns: -1
"fiver"
Returns: -1