public static List<List<String>> partition(String s) {
        List<List<String>> result = new ArrayList<List<String>>();
        if (s == null || s == ""){
            return result;
        }
        List<String> row = new ArrayList<String>();
        int index = 0;
        search(s, row, index, result);
        return result;
    }