1. 程式人生 > >【leetcode】131.(Medium)Palindrome Partitioning

【leetcode】131.(Medium)Palindrome Partitioning

解題思路:

回溯


提交程式碼:

class Solution {
    public List<List<String>> partition(String s) {
        List<List<String>> res=new ArrayList<List<String>>();
        if(s.length()==0)	return res;

        List<String> curStrings=new ArrayList<>();
        findPalindromes
(s,curStrings,res); return res; } private boolean isPalindrome(String s) { for(int i=0;i<s.length()/2;i++) { if(s.charAt(i)!=s.charAt(s.length()-1-i)) return false; } return true; } private void findPalindromes(String s,List<String>
curStrings,List<List<String>> res) { if(s.length()==0) { res.add(new ArrayList<>(curStrings)); return; } for(int i=0;i<s.length();i++) { String sub=s.substring(0, i+1); if(isPalindrome(sub)) { curStrings.add(sub); findPalindromes
(s.substring(i+1,s.length()),curStrings,res); curStrings.remove(curStrings.size()-1); } } } }

提交程式碼:
在這裡插入圖片描述