题目描述

示例

代码如下:
public class SplitIntoFibonacci {LinkedList<Integer> res = new LinkedList<>();public List<Integer> splitIntoFibonacci(String num) {if(num.length() < 3) return res;if(dfs(num, 0)) return res;return new LinkedList<>();}public boolean dfs(String num, int start) {if (start == num.length() && res.size() >= 3) {return true;}for (int i = start; i < num.length(); i++) {if (num.charAt(start) == '0' && i > start) {break;}String s = num.substring(start, i + 1);long cur = Long.valueOf(s);if (cur > Integer.MAX_VALUE) {break;}int size = res.size();if (size >= 2) {if(cur > res.get(size - 1) + res.get(size - 2)){break;}if(cur < res.get(size - 1) + res.get(size - 2)){continue;}}res.add((int) cur);if (dfs(num, i + 1))return true;res.removeLast();}return false;}}