Leetcode 872 Solution

This article provides solution to leetcode question 872 (split-array-into-fibonacci-sequence).

https://leetcode.com/problems/split-array-into-fibonacci-sequence

Solution

class Solution(object):
    def splitIntoFibonacci(self, S):
        """
        :type S: str
        :rtype: List[int]
        """
        i = 1
        limit = 2**31 - 1
        
        while i < len(S):
            j = i + 1
            
            while j < len(S):
                sa = S[:i]
                sb = S[i:j]
                
                ia = int(sa)
                ib = int(sb)
                
                if str(ia) != sa or str(ib) != sb:
                    j += 1
                    continue
                    
                ans = [ia, ib]
                k = j
                while k < len(S):
                    ic = ia + ib
                    sc = str(ic)

                    if ia > limit or ib > limit:
                        break

                    if sc != S[k:k + len(sc)]:
                        break

                    k += len(sc)
                    ia = ib
                    ib = ic
                    ans.append(ic)

                if k == len(S) and ic <= limit:
                    return ans

                j += 1
                
            i += 1

        return []