Algo.Java.RecursiveSlidingWindow

interesting approach

// https://leetcode.com/problems/longest-nice-substring/
class Solution {
    public String longestNiceSubstring(String s) {
        int [] index = longestNiceSubstring(s, 0, s.length());
        return s.substring(index[0], index[1]);
    }

    private int [] longestNiceSubstring(String s, int start, int end) {
        for(int i = start; i < end; i++) {
            char ch = s.charAt(i);
            if(Character.isLowerCase(ch) && s.substring(start, end).contains(Character.toUpperCase(ch) + "")) continue;
            else if(Character.isUpperCase(ch) && s.substring(start, end).contains(Character.toLowerCase(ch) + "")) continue;

            int [] first = longestNiceSubstring(s, start, i);
            int [] second = longestNiceSubstring(s, i + 1, end);

            if(first[1] - first[0] >= second[1] - second[0]) {
                return first;
            } else {
                return second;
            }
        }

        return new int[] {start, end};
    }
}

This entry was posted in Без рубрики. Bookmark the permalink.