import java.util.*;
public class Solution {
public ArrayList<ArrayList<String>> partition(String s) {
// Start typing your Java solution below
// DO NOT write main() function
ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>>();
for (int i = 0; i < s.length(); i++) {
int j = i + 1;
if (i > 0) {
j = i + 2;
}
for (; j <= s.length(); j++) {
String str = s.substring(i,j);
if (isPalindrome(str) == true) {
result.add(getList(s, i, j));
}
}
}
return result;
}
public ArrayList<String> getList(String input, int i, int j) {
ArrayList<String> result = new ArrayList<String>();
for (int k = 0; k < i;) {
result.add(input.substring(k,++k));
}
if (input.substring(i,j).length() != 0) {
result.add(input.substring(i,j));
}
for (int k = j; k < input.length();) {
result.add(input.substring(k,++k));
}
return result;
}
public boolean isPalindrome(String input) {
String converStr = getConverseString(input);
if (input.equals(converStr)) {
return true;
}
return false;
}
public String getConverseString(String orig) {
char[] c = orig.toCharArray();
for (int i = 0; i < c.length/2; i++) {
char temp;
temp = c[c.length-i-1];
c[c.length-i-1] = c[i];
c[i] = temp;
}
return new String(c);
}
public static void main(String[] args) {
Solution s = new Solution();
ArrayList<ArrayList<String>> result = s.partition("cbb");
for (ArrayList<String> output: result) {
System.out.print("---");
for (String str: output) {
System.out.print(str + ",");
}
System.out.println("---");
}
}
}
public class Solution {
public ArrayList<ArrayList<String>> partition(String s) {
// Start typing your Java solution below
// DO NOT write main() function
ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>>();
for (int i = 0; i < s.length(); i++) {
int j = i + 1;
if (i > 0) {
j = i + 2;
}
for (; j <= s.length(); j++) {
String str = s.substring(i,j);
if (isPalindrome(str) == true) {
result.add(getList(s, i, j));
}
}
}
return result;
}
public ArrayList<String> getList(String input, int i, int j) {
ArrayList<String> result = new ArrayList<String>();
for (int k = 0; k < i;) {
result.add(input.substring(k,++k));
}
if (input.substring(i,j).length() != 0) {
result.add(input.substring(i,j));
}
for (int k = j; k < input.length();) {
result.add(input.substring(k,++k));
}
return result;
}
public boolean isPalindrome(String input) {
String converStr = getConverseString(input);
if (input.equals(converStr)) {
return true;
}
return false;
}
public String getConverseString(String orig) {
char[] c = orig.toCharArray();
for (int i = 0; i < c.length/2; i++) {
char temp;
temp = c[c.length-i-1];
c[c.length-i-1] = c[i];
c[i] = temp;
}
return new String(c);
}
public static void main(String[] args) {
Solution s = new Solution();
ArrayList<ArrayList<String>> result = s.partition("cbb");
for (ArrayList<String> output: result) {
System.out.print("---");
for (String str: output) {
System.out.print(str + ",");
}
System.out.println("---");
}
}
}