LeetcodePalindrome Partitioning

Posted wuezs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetcodePalindrome Partitioning相关的知识,希望对你有一定的参考价值。

题目链接:https://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"]
]

思路:

回溯,判断对每一种切分是否是回文串,剪枝函数是当第一个子串不是回文串时 不往下递归了。

ps:去年做过这题,当时脑子还停留在其他题上,居然想出个用回溯法计算出所有切分的可能,然后对这些切分后的字符串进行判断,= =ORZ


算法:

  	List<List<String>> results = new ArrayList<List<String>>();

	public List<List<String>> partition(String s) {
		if (s.length() == 0) {
			return results;
		}
		dfs(s, 0, new ArrayList<String>());
		return results;
	}

	public void dfs(String s, int start, List<String> res) {
		if (start == s.length()) {
			results.add(new ArrayList<String>(res));
			return;
		}
		for (int i = start + 1; i <= s.length(); i++) {
			String left = s.substring(start, i);
			if (isPalindrome(left)) {
				res.add(left);
				dfs(s, i, res);
				res.remove(res.size()-1);
			}
		}
	}

	boolean isPalindrome(String s) {
		boolean flag = true;
		int i = 0, j = s.length() - 1;
		char c[] = s.toCharArray();
		while (i < j) {
			if (c[i] != c[j]) {
				flag = false;
				break;
			} else {
				i++;
				j--;
			}
		}
		return flag;
	}


以上是关于LeetcodePalindrome Partitioning的主要内容,如果未能解决你的问题,请参考以下文章

LeetcodePalindrome Partitioning

LeetcodePalindrome Partitioning II

LeetCodePalindrome Partitioning 解题报告

mysql 分区

mysql 分区

kafka