標籤:code 迴文串 部分 length str turn 代碼 題目 remove
題目:
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方法尋找,每次尋找字串頭可能的迴文串,然後切割掉,繼續尋找剩餘的字串s,如果最後s.length ==0 ,那麼說明字串可以全部分割為迴文串,滿足條件。添加到結果集中。
代碼:
class Solution { public List<List<String>> partition(String s) { List<List<String>> res = new ArrayList<>(); if(s==null || s.length() ==0 ) return res; //dfs??分割出每一個迴文 DFS(res,new ArrayList<String>(),s); return res; } private void DFS(List<List<String>> res ,List<String> arrayList,String s){ if(s.length() == 0){ res.add(new ArrayList<>(arrayList)); return; } for(int i = 0;i<s.length();i++){ String str = s.substring(0,i+1); if(isPalindrome(str)){ arrayList.add(str); DFS(res,arrayList,s.substring(str.length())); arrayList.remove(arrayList.size()-1); } } } private boolean isPalindrome(String s ){ //判斷s是否是迴文 for(int i = 0;i<s.length()/2;i++){ if(s.charAt(i) != s.charAt(s.length()-1-i)) return false; } return true; }}
[LeetCode] 131. Palindrome Partitioning Java