Given task sameEnds from CodingBat:
Given a string, return the longest substring that appears at both the beginning and end of the string without overlapping. For example, sameEnds("abXab") is "ab".
sameEnds("abXYab") → "ab"
sameEnds("xx") → "x"
sameEnds("xxx") → "x"
My solution passes all the tests except one^:
public String sameEnds(String string) {
String substringFront = "";
String substringEnd = "";
String longestSubstring = "";
for (int i = 1; i < string.length() - 1; i++) {
substringFront = string.substring(0, i);
substringEnd = string.substring(i);
if (substringEnd.contains(substringFront)) {
longestSubstring = substringFront;
}
}
return longestSubstring;
}
What is the problem here? How could I fix it?
This solution passes all tests:
public String sameEnds(String string) {
String substringFront = "";
String substringEnd = "";
String longestSubstring = "";
for (int i = 1; i < string.length(); i++) {
substringFront = string.substring(0, i);
substringEnd = string.substring(i);
if (substringEnd.contains(substringFront)) {
longestSubstring = substringFront;
}
}
return longestSubstring;
}