G10: longest palindrome or every palindrome
Write a program that prints all the sub string that is palindrome within a input String. For e.g For input String "abbcacbca" output
should be: [cac, bcacb, cbc, acbca, bb]
URL: question?id=9689276
package careercup;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class test1 {
private Triplets trip = new Triplets(0, 0, 0);
public static void main(String[] args) {
String ss = "abba";
new test1().isPalindrome(ss.toCharArray());
}
private void isPalindrome(char[] s){
int len = s.length;
int hit[][] = new int[len][len];
for(int i=0; i<len;i++) {
hit[i][i] = 1;
//System.out.println(s[i]);
}
for(int i=0; i<len-1;i++) {
if(s[i]==s[i+1]) {
hit[i][i+1] = 2;
System.out.println(s[i]+ ", " + s[i+1]);
}
}
for(int k=2; k<len;k++) {
for(int i=0; i<len-k; i++) {
int j=i+k;
if(s[i]==s[j] && hit[i+1][j-1]!=0) {
hit[i][j]=k+1;
if(k+1>trip.max) {
trip.max = k+1;
trip.low = i;
trip.high = j;
}
} else {
hit[i][j]=0;
}
}
}
System.out.print("max element is: ");
print(s,trip.low, trip.high);
}
private static void print(char[] s, int i, int j) {
String ss = new String(s,i,j-i+1);
System.out.println(ss);
}
private class Triplets{
public int max;
public int low;
public int high;
public Triplets(int max, int low, int high){
this.max = max;
this.low = low;
this.high = high;
}
}
}
浙公网安备 33010602011771号