555.Split Concatenated Strings

111

https://leetcode.com/problems/split-concatenated-strings/discuss/101797/Easy-understanding-C++-solution-with-detailed-explnation

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;
                }
            }
        }

    }
}

results matching ""

    No results matching ""