Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 34b3d8b

Browse files
committed
Refactor with PMD analysis
Run PMD analysis: /pmd-bin-6.49.0/bin$ ./run.sh pmd -d codechallenge/src/main/java/hackerrank/CompareSubstrings.java -f text -R .pmd --cache /tmp/codechallenge-pmd-analysis Run unit test via mvn: mvn test -Dtest=hackerranktest.java.CompareSubstringsTest
1 parent 5856e78 commit 34b3d8b

File tree

2 files changed

+85
-6
lines changed

2 files changed

+85
-6
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package hackerrank.java;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.List;
6+
7+
/**
8+
* Given String s, find the lexicographically
9+
* smallest and largest substrings of length k.
10+
*
11+
*/
12+
public final class CompareSubstrings {
13+
/**
14+
* string randomString: a string
15+
*
16+
*/
17+
private final String randomString;
18+
19+
/**
20+
* int substringLength: the length of the substrings to find
21+
*
22+
*/
23+
private final int substringLength;
24+
25+
public String getRandomString() {
26+
return randomString;
27+
}
28+
29+
public int getSubstringLength() {
30+
return substringLength;
31+
}
32+
33+
/**
34+
*
35+
* @param randomString String A string
36+
* @param substringLength int Substring length
37+
*/
38+
public CompareSubstrings(final String randomString,
39+
final int substringLength) {
40+
this.randomString = randomString;
41+
this.substringLength = substringLength;
42+
}
43+
44+
45+
46+
/**
47+
* Create substring of the given length substringLength
48+
*
49+
* @return String
50+
*/
51+
public String createSubstrings() {
52+
final List<String> subStringList
53+
= new ArrayList<>();
54+
55+
final int subStringLen = randomString.length()
56+
- substringLength + 1;
57+
58+
for (int count = 0; count < subStringLen; count++) {
59+
subStringList.add(
60+
randomString.substring( count,
61+
substringLength + count));
62+
}
63+
64+
Collections.sort(subStringList);
65+
final String smallestSubString = subStringList.get(0);
66+
final String largestSubString = subStringList.get(subStringList.size()-1);
67+
68+
return smallestSubString + " " + largestSubString;
69+
70+
}
71+
}
72+
73+
74+
/**
75+
* Problem
76+
* https://www.hackerrank.com/challenges/java-string-compare
77+
*/
Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package hackerranktest.java;
22

3-
import hackerrank.Java.CompareSubstrings;
3+
import hackerrank.java.CompareSubstrings;
44
import org.junit.jupiter.api.Assertions;
5-
import org.junit.jupiter.api.Test;
65
import org.junit.jupiter.params.ParameterizedTest;
76
import org.junit.jupiter.params.provider.CsvSource;
87

@@ -12,11 +11,14 @@ public class CompareSubstringsTest {
1211
"welcometojava, 3, ava wel",
1312
"ASDFHDSFHsdlfhsdlfLDFHSDLFHsdlfhsdlhkfsdlfLHDFLSDKFHsdfhsdlkfhsdlfhsLFDLSFHSDLFHsdkfhsdkfhsdkfhsdfhsdfjeaDFHSDLFHDFlajfsdlfhsdlfhDSLFHSDLFHdlfhs, 30, ASDFHDSFHsdlfhsdlfLDFHSDLFHsdl sdlkfhsdlfhsLFDLSFHSDLFHsdkfhs"
1413
})
15-
void toUpperCase_ShouldGenerateTheExpectedUppercaseValue(
16-
String s, int k, String expected) {
14+
void shouldCreateSmallestAndLargestSubstrings(
15+
String randomString, int substringLength, String expected) {
16+
17+
CompareSubstrings compareSubstrings = new CompareSubstrings(
18+
randomString, substringLength);
19+
20+
String actual = compareSubstrings.createSubstrings();
1721

18-
CompareSubstrings compareSubstrings = new CompareSubstrings();
19-
String actual = compareSubstrings.getSmallestAndLargest(s, k);
2022
Assertions.assertEquals(expected, actual);
2123
}
2224
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /