【LeetCode】Palindrome Partitioning 解题报告
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode】Palindrome Partitioning 解题报告
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【題目】
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"]]【回溯】
public class Solution {public ArrayList<ArrayList<String>> partition(String s) {ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>>();ArrayList<String> list = new ArrayList<String>();if (s == null || s.length() == 0)return result;calResult(result,list,s);return result;}/*** 推斷一個(gè)字符串是否是回文字符串*/private boolean isPalindrome(String str){int i = 0;int j = str.length() - 1;while (i < j){if (str.charAt(i) != str.charAt(j)){return false;}i++;j--;}return true;}/*** 回溯* @param result : 終于要的結(jié)果集 ArrayList<ArrayList<String>>* @param list : 當(dāng)前已經(jīng)增加的集合 ArrayList<String>* @param str : 當(dāng)前要處理的字符串*/private void calResult(ArrayList<ArrayList<String>> result, ArrayList<String> list, String str){//當(dāng)處理到傳入的字符串長(zhǎng)度等于0,則這個(gè)集合list滿足條件,增加到結(jié)果集中if (str.length() == 0)result.add(new ArrayList<String>(list));int len = str.length();//遞歸調(diào)用//字符串由前往后,先推斷str.substring(0, i)是否是回文字符串//假設(shè)是的話,繼續(xù)調(diào)用函數(shù)calResult,把str.substring(i)字符串傳入做處理for (int i=1; i<=len; ++i){String subStr = str.substring(0, i);if (isPalindrome(subStr)){list.add(subStr);String restSubStr = str.substring(i);calResult(result,list,restSubStr);list.remove(list.size()-1);}}}
} 轉(zhuǎn)載于:https://www.cnblogs.com/blfbuaa/p/6913823.html
總結(jié)
以上是生活随笔為你收集整理的【LeetCode】Palindrome Partitioning 解题报告的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Opencv】直方图函数 calchi
- 下一篇: 第六章 敏捷流程