Skip to content

Instantly share code, notes, and snippets.

@seangenabe
Created August 14, 2014 21:02
Show Gist options
  • Save seangenabe/da96b55353b8b1d53b43 to your computer and use it in GitHub Desktop.
Save seangenabe/da96b55353b8b1d53b43 to your computer and use it in GitHub Desktop.
import java.io.*;
import java.util.*;
public class WordToNumber {
public static void main(String[] args) throws IOException {
(new WordToNumber()).run();
}
public void run() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<Integer> numberStack = new Stack<Integer>();
String input = br.readLine();
String[] tokens = input.split("[ ,]");
for (String token : tokens) {
int digitValue = getDigitValue(token);
if (digitValue != -1) {
numberStack.push(digitValue);
}
else if (token.equals("ten")) {
numberStack.push(10);
}
else if (token.equals("eleven")) {
numberStack.push(11);
}
else if (token.equals("twelve")) {
numberStack.push(12);
}
else if (token.equals("thirteen")) {
numberStack.push(13);
}
else if (token.equals("fourteen")) {
numberStack.push(14);
}
else if (token.equals("fifteen")) {
numberStack.push(15);
}
else if (token.equals("sixteen")) {
numberStack.push(16);
}
else if (token.equals("seventeen")) {
numberStack.push(17);
}
else if (token.equals("eighteen")) {
numberStack.push(18);
}
else if (token.equals("nineteen")) {
numberStack.push(19);
}
else if (token.equals("thousand")) {
int currentNumber = numberStack.pop();
if (!numberStack.empty() && numberStack.peek() >= 100) {
currentNumber += numberStack.pop();
}
numberStack.push(currentNumber * 1000);
}
else if (token.equals("hundred")) {
int currentNumber = numberStack.pop();
numberStack.push(currentNumber * 100);
}
else if (token.startsWith("twenty")) {
numberStack.push(getTwoDigitTokenValue(token, 20));
}
else if (token.startsWith("thirty")) {
numberStack.push(getTwoDigitTokenValue(token, 30));
}
else if (token.startsWith("forty")) {
numberStack.push(getTwoDigitTokenValue(token, 40));
}
else if (token.startsWith("fifty")) {
numberStack.push(getTwoDigitTokenValue(token, 50));
}
else if (token.startsWith("sixty")) {
numberStack.push(getTwoDigitTokenValue(token, 60));
}
else if (token.startsWith("seventy")) {
numberStack.push(getTwoDigitTokenValue(token, 70));
}
else if (token.startsWith("eighty")) {
numberStack.push(getTwoDigitTokenValue(token, 80));
}
else if (token.startsWith("ninety")) {
numberStack.push(getTwoDigitTokenValue(token, 90));
}
}
int sum = 0;
for (int x : numberStack) {
sum += x;
}
System.out.println(sum);
}
public int getDigitValue(String token) {
if (token.equals("zero")) {
return 0;
}
if (token.equals("one")) {
return 1;
}
else if (token.equals("two")) {
return 2;
}
else if (token .equals("three")) {
return 3;
}
else if (token .equals("four")) {
return 4;
}
else if (token .equals("five")) {
return 5;
}
else if (token .equals("six")) {
return 6;
}
else if (token .equals("seven")) {
return 7;
}
else if (token .equals("eight")) {
return 8;
}
else if (token .equals("nine")) {
return 9;
}
else {
return -1;
}
}
public int getTwoDigitTokenValue(String token, int prefixValue) {
String[] twoDigit;
twoDigit = token.split("-");
if (twoDigit.length > 1) {
return prefixValue + getDigitValue(twoDigit[1]);
}
else {
return prefixValue;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment