Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>

</dependencies>
</project>
78 changes: 78 additions & 0 deletions src/main/java/io/zipcoder/Problem6.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,82 @@
package io.zipcoder;

//Given a time given as a String in numerical format,
// convert that value into its military time phrase.

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Problem6 {

private String time;

public Problem6(String time) {
this.time = time;
}



public String convertToMilitaryTimePhrase() {
String timePattern = "(1[012]|[1-9]):([0-5][0-9])(am|pm)";

Pattern pattern = Pattern.compile(timePattern);
Matcher matcher = pattern.matcher(time);


String[] minutesDigitsZeroToFiftyNine = {
"zero", "zero one", "zero two", "zero three", "zero four", "zero five",
"zero six", "zero seven", "zero eight", "zero nine", "ten",
"eleven", "twelve", "thirteen", "fourteen", "fifteen",
"sixteen", "seventeen","eighteen", "nineteen","twenty",
"twenty one", "twenty two", "twenty three","twenty four", "twenty five",
"twenty six", "twenty seven", "twenty eight", "twenty nine", "thirty",
"thirty one" ,"thirty two", "thirty-three", "thirty four", "thirty five",
"thirty six", "thirty seven", "thirty eight", "thirty nine", "forty",
"forty one", "forty two", "forty three", "forty four", "forty five",
"forty six", "forty seven", "forty eight", "forty nine", "fifty",
"fifty one", "fifty two", "fifty three", "fifty four", "fifty five",
"fifty six", "fifty seven", "fifty eight", "fifty nine"};




int hourNumber = 0;
int minutesNumber = 0;
String amOrPm = "";
if(matcher.find()){
hourNumber += Integer.valueOf(matcher.group(1));
minutesNumber+= Integer.valueOf(matcher.group(2));
amOrPm+=(matcher.group(3));
}

if(amOrPm.equals("pm")){
hourNumber+=12;
}

String newTime ="";
if(minutesNumber< 10){
newTime = minutesDigitsZeroToFiftyNine[hourNumber] + " hundred " + minutesDigitsZeroToFiftyNine[minutesNumber] + " hours";

}
else {
newTime = minutesDigitsZeroToFiftyNine[hourNumber] + " hundred and " + minutesDigitsZeroToFiftyNine[minutesNumber] + " hours";
}
return camelCaseSentence(newTime);

}

public String camelCaseSentence(String str){
String [] temp = str.split(" ");
StringBuilder sentence = new StringBuilder();
for (int i = 0; i < temp.length; i++) {
sentence.append(temp[i].substring(0,1).toUpperCase());
sentence.append(temp[i].substring(1));
sentence.append(" ");
}
sentence.trimToSize();
String finalSentence = sentence.toString();
return finalSentence.replaceAll("[A|a][n][d]", "and");

}

}
73 changes: 73 additions & 0 deletions src/test/java/io/zipcoder/Problem6Test.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,77 @@
package io.zipcoder;

import org.junit.Assert;
import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class Problem6Test {

@Test
public void problemTest1(){

Problem6 problem6 = new Problem6("1:30pm");

String expected = "Thirteen Hundred and Thirty Hours ";
String actual = problem6.convertToMilitaryTimePhrase();

Assert.assertEquals(expected, actual);
}

@Test
public void problemTest2(){

Problem6 problem6 = new Problem6("1:30am");

String expected = "Zero One Hundred and Thirty Hours ";
String actual = problem6.convertToMilitaryTimePhrase();

Assert.assertEquals(expected, actual);
}

@Test
public void problemTest3(){

Problem6 problem6 = new Problem6("2:22pm");

String expected = "Fourteen Hundred and Twenty Two Hours ";
String actual = problem6.convertToMilitaryTimePhrase();

Assert.assertEquals(expected, actual);
}

@Test
public void problemTest4(){

Problem6 problem6 = new Problem6("2:11am");

String expected = "Zero Two Hundred and Eleven Hours ";
String actual = problem6.convertToMilitaryTimePhrase();

Assert.assertEquals(expected, actual);
}

@Test
public void problemTest5(){

Problem6 problem6 = new Problem6("10:02am");

String expected = "Ten Hundred Zero Two Hours ";
String actual = problem6.convertToMilitaryTimePhrase();

Assert.assertEquals(expected, actual);
}

@Test
public void camelCaseSentence(){
Problem6 problem6 = new Problem6("10:02am");

String actual = problem6.camelCaseSentence("ten hundred zero two hours ");
String expected = "Ten Hundred Zero Two Hours ";
Assert.assertEquals(expected, actual);



}
}