public List<List<String>> partition(String s) {
        Map<Integer, List<List<String>>> dp = new HashMap<>();
        List<List<String>> result =  partitionUtil(s, dp, 0);
        List<List<String>> r = new ArrayList<>();
        for (List<String> l : result) {
            r.add(l);
        }
        return r;
    }
Given a string s, partition s such that every substring of the partition is a palindrome.
https://leetcode.com/problems/palindrome-partitioning/
src/com/interview/dynamic/PalindromePartition.java