842. Split Array into Fibonacci Sequence

;  |     Back to Homepage   |     Back to Code List


class Solution {
    public List<Integer> splitIntoFibonacci(String S) {
        List<Integer> res = new ArrayList<>();
        helper(S, res, 0);
        return res;
    }

    private boolean helper(String s, List<Integer> res, int pos) {
        if (pos == s.length()) {
            return res.size() > 2 ? true : false;
        }

        int num = 0;
        int n = s.length();

        for (int i = pos; i < n; i++) {
            num = num * 10 + (s.charAt(i) - '0');
            if (num < 0) return false;

            if (res.size() < 2 || (res.get(res.size() - 2) + res.get(res.size() - 1) == num)) {
                res.add(num);

                if (helper(s, res, i + 1)) return true;

                res.remove(res.size() - 1);
            }

            if (i == pos && s.charAt(i) == '0') return false;
        }

        return false;
    }
}