This is an AWESOME assignment. One that I would enjoy doing myself. Okay, how to approach it.
Well, overall you are doing two things: Finding tokens (words that translates to numbers) and applying grammar. In short, you are building a parser for a very limited language.
The tokens you would need are:
POWER: thousand, million, billion
HUNDRED: hundred
TEN: twenty, thirty... ninety
UNIT: one, two, three, ... nine,
SPECIAL: ten, eleven, twelve, ... nineteen
(drop any "and"s as they are meaningless. Break hyphens into two tokens. That is sixty-five should be processed as "sixty" "five")
Once you've tokenized your string, move from RIGHT TO LEFT.
1. Grab all the tokens from the RIGHT until you hit a POWER or the whole string.
2. Parse the tokens after the stop point for these patterns:
SPECIAL
TEN
UNIT
TEN UNIT
UNIT HUNDRED
UNIT HUNDRED SPECIAL
UNIT HUNDRED TEN
UNIT HUNDRED UNIT
UNIT HUNDRED TEN UNIT
(This assumes that "seventeen hundred" is not allowed in this grammar)
This gives you the last three digits of your number.
3. If you stopped at the whole string you are done.
4. If you stopped at a power, start again at step 1 until you reach a higher POWER or the whole string.