Initial commit
This commit is contained in:
57
lab_3/main.java
Normal file
57
lab_3/main.java
Normal file
@@ -0,0 +1,57 @@
|
||||
package lab_3;
|
||||
|
||||
public class main {
|
||||
static int maxStrLength;
|
||||
static String result;
|
||||
|
||||
public static void cSubUtil(StringBuilder stringbuilder, int leftBoundary, int rightBoundary) {
|
||||
String string = stringbuilder.toString().toLowerCase().replaceAll("[^a-z]","");
|
||||
// check if the indices lie in the range of string
|
||||
// and also if it is palindrome
|
||||
while (leftBoundary >= 0 && rightBoundary < string.length() && string.toLowerCase().charAt(leftBoundary) == string.toLowerCase().charAt(rightBoundary)) {
|
||||
// expand the boundary
|
||||
leftBoundary--;
|
||||
rightBoundary++;
|
||||
}
|
||||
// if it's length is greater than maxStrLength update
|
||||
// maxLength and result
|
||||
if (rightBoundary - leftBoundary - 1 >= maxStrLength) {
|
||||
result = string.substring(leftBoundary + 1, rightBoundary);
|
||||
maxStrLength = rightBoundary - leftBoundary - 1;
|
||||
}
|
||||
}
|
||||
|
||||
public static int longestPalSubstr(StringBuilder string)
|
||||
{
|
||||
result = "";
|
||||
maxStrLength = 1;
|
||||
// for every index in the string check palindromes
|
||||
// starting from that index
|
||||
for (int i = 0; i < string.length(); i++) {
|
||||
// check for odd length palindromes
|
||||
cSubUtil(string, i, i);
|
||||
// check for even length palindromes
|
||||
cSubUtil(string, i, i + 1);
|
||||
}
|
||||
System.out.println("Longest palindrome substring is: " + compareStrings(string));
|
||||
return compareStrings(string).length();
|
||||
}
|
||||
|
||||
public static String compareStrings(StringBuilder builder) {
|
||||
for (int leftBoundary = 0; leftBoundary <= builder.length(); leftBoundary++) {
|
||||
for (int rightBoundary = builder.length(); rightBoundary >= leftBoundary; rightBoundary--) {
|
||||
if (result.equals(builder.substring(leftBoundary, rightBoundary).toLowerCase().replaceAll("[^a-z]",""))) {
|
||||
return builder.substring(leftBoundary, rightBoundary);
|
||||
}
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
StringBuilder stringToDetect = new StringBuilder("Eva, can I see bees in a cave?");
|
||||
|
||||
System.out.println("Initial string: " + stringToDetect);
|
||||
System.out.println("Length is: " + longestPalSubstr(stringToDetect));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user