Leetcode - Longest Substring with At Least K Repeating Characters

My code:

public class Solution {
    public int longestSubstring(String s, int k) {
        if (s == null || s.length() < k) {
            return 0;
        }
        
        return helper(s.toCharArray(), 0, s.length() - 1, k);
    }
    
    private int helper(char[] arr, int start, int end, int k) {
        if (end - start + 1 < k) {
            return 0;
        }
        int[] dict = new int[26];
        for (int i = start; i <= end; i++) {
            dict[arr[i] - 'a']++;
        }
        for (int i = 0; i < 26; i++) {
            if (dict[i] == 0) {
                continue;
            }
            else if (dict[i] < k) {
                for (int j = start; j <= end; j++) {
                    if (arr[j] == (char) ('a' + i)) {
                        int left = helper(arr, start, j - 1, k);
                        int right = helper(arr, j + 1, end, k);
                        return Math.max(left, right);
                    }
                }
            }
        }
        return end - start + 1;
    }
}

reference:
https://discuss.leetcode.com/topic/57372/java-3ms-divide-and-conquer-recursion-solution

这种方法思路我还是第一次见到,挺巧的。

现在刷Leetcode,基本上是新题看一遍,5秒内没思路就直接看答案了。
有人问我,你这样刷,有意义吗?
没意义。
但,刷题本身,有意义吗?
除了Google,大多数公司都是考原题,为什么不把刷题当作GRE来准备呢?
这是 规则。 世道如此,不要再犯傻了。

Anyway, Good luck, Richardo! — 10/14/2016

    原文作者:Richardo92
    原文地址: https://www.jianshu.com/p/3dafe883bfa2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞