leetcode Palindrome Partitioning

来源:互联网 发布:二手警服淘宝 编辑:程序博客网 时间:2024/06/05 08:20

Palindrome Partitioning 原题地址:

https://oj.leetcode.com/problems/palindrome-partitioning/

Given a string s, partition s such that every substring of the partition is a palindrome.

Return all possible palindrome partitioning of s.

For example, given s = "aab",
Return

  [    ["aa","b"],    ["a","a","b"]  ]
之前有道动态规划的题,加一个dfs就可以。

public class Solution {    private List<List<String>> plist = new ArrayList<List<String>>();public List<List<String>> partition(String s) {if (s == null || s.length() == 0)return plist;int len = s.length();boolean[][] palin = new boolean[len][len];for (int h = 0; h < len; h++)for (int i = 0; i < len-h; i++) {if (s.charAt(i) == s.charAt(i+h) && (h < 2 || palin[i+1][i+h-1]))palin[i][i+h] = true;}LinkedList<String> list = new LinkedList<String>();dfs(palin, list, s, 0);return plist;}private void dfs(boolean[][] palin, LinkedList<String> list, String s, int v) {if (v == s.length()) {List<String> _list = (List<String>) list.clone();plist.add(_list);return;}for (int w = v; w < s.length(); w++) {if (palin[v][w]) {String temp = s.substring(v, w+1);list.add(temp);dfs(palin, list, s, w+1);list.pollLast();}}}}


0 0
原创粉丝点击