555.Split Concatenated Strings
111
class Solution {
String ans = "";
public String splitLoopedString(String[] strs) {
for(int i = 0; i < strs.length; i++){
String rev = new StringBuilder(strs[i]).reverse().toString();
if(strs[i].compareTo(rev) < 0)
strs[i] = rev;
}
for(int i = 0; i < strs.length; i++){
solve(strs, i, true);
solve(strs, i, false);
}
return ans;
}
public void solve(String[] strs, int i, boolean isReverse){
String cur;
if(isReverse){
cur = new StringBuilder(strs[i]).reverse().toString();
}
else{
cur = strs[i];
}
int curLen = cur.length();
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
for(int j = i + 1; j < strs.length; j++){
sb1.append(strs[j]);
}
for(int j = 0; j < i; j++){
sb2.append(strs[j]);
}
StringBuilder sb3 = new StringBuilder();
for(int k = 0; k < curLen; k++){
sb3.setLength(0);
sb3.append(cur.substring(k));
sb3.append(sb1.toString());
sb3.append(sb2.toString());
sb3.append(cur.substring(0, k));
String newOne = sb3.toString();
if("".equals(ans)){
ans = newOne;
}
else{
if(ans.compareTo(newOne) < 0){
ans = newOne;
}
}
}
}
}