Skip to content

Commit

Permalink
separate the numbers implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
jaebradley committed Jul 19, 2017
1 parent a36efe1 commit 1cbd689
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package algorithms.implementations;

import algorithms.interfaces.BeautifulNumberValidator;

/**
* https://www.hackerrank.com/challenges/separate-the-numbers/problem
*/

public class BeautifulNumberValidatorImpl implements BeautifulNumberValidator {
@Override
public boolean isValidBeautifulNumber(final String s) {
if (s.length() < 2) {
return false;
}

for (int substringSize = 1; substringSize <= s.length() / 2; substringSize++) {
long value = Long.parseLong(s.substring(0, substringSize));

if (value == 0) {
break;
}

StringBuilder sb = new StringBuilder();
sb.append(value);

while (sb.length() < s.length() && sb.toString().equals(s.substring(0, sb.length()))) {
sb.append(++value);
}

if (sb.toString().equals(s)) {
return true;
}
}

return false;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package algorithms.interfaces;

public interface BeautifulNumberValidator {
boolean isValidBeautifulNumber(final String s);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package algorithms.implementations;

import algorithms.interfaces.BeautifulNumberValidator;
import org.junit.Test;

import static org.junit.Assert.*;

public class BeautifulNumberValidatorImplTest {
final BeautifulNumberValidator validator = new BeautifulNumberValidatorImpl();

@Test
public void itShouldBeAValidBeautifulNumber() {
assertTrue(validator.isValidBeautifulNumber("1234"));
}

@Test
public void itShouldNotBeAValidBeautifulNumber() {
assertFalse(validator.isValidBeautifulNumber("101103"));
}

@Test
public void itShouldNotBeAValidBeautifulNumberSinceItStartsWithZero() {
assertFalse(validator.isValidBeautifulNumber("010203"));
}

@Test
public void itShouldNotBeAValidBeautifulNumberSinceItIsTooSmall() {
assertFalse(validator.isValidBeautifulNumber("1"));
}
}

0 comments on commit 1cbd689

Please sign in to comment.