Question
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"
Expected result
Solution
public String sameEnds(String string) {
String[] subStrs = getAllSubstring(string);
String result = "";
for(int i = subStrs.length-1; 0<=i; i--){
String lastPart = string.substring(string.length()-i-1,string.length());
if(subStrs[i].equals(lastPart)) return lastPart;
}
return result;
}
private String[] getAllSubstring(String source){
int scope = (int) Math.floor(source.length()/2);
String[] substringList = new String[scope];
for(int i=0; i<scope; i++){
String c = Character.toString(source.charAt(i));
if(i!=0){
substringList[i] = substringList[i-1]+c;
}else{
substringList[i] = c;
}
}
return substringList;
}
No comments :
Post a Comment