-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy path131. Palindrome Partitioning
31 lines (31 loc) · 1 KB
/
131. Palindrome Partitioning
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Solution {
public List<List<String>> partition(String s) {
List<List<String>> list = new ArrayList();
List<String> sublist = new ArrayList();
backtrack(list, sublist, s, 0);
return list;
}
public void backtrack(List<List<String>> list, List<String> sublist, String s, int start){
if(start==s.length()){
list.add(new ArrayList(sublist));
return;
}
for(int i = start; i<s.length();i++){
if(isPalindrome(s, start, i)){
if(start==i)
sublist.add(s.charAt(start)+"");
else
sublist.add(s.substring(start, i+1));
backtrack(list, sublist, s, i+1);
sublist.remove(sublist.size()-1);
}
}
}
public boolean isPalindrome(String s, int low, int high){
while(low<=high){
if(s.charAt(low++)!=s.charAt(high--))
return false;
}
return true;
}
}