2023-05-07 15:19:23 +03:00
|
|
|
package OOP.Java.lab_3;
|
|
|
|
|
|
|
|
public class lab_3 {
|
|
|
|
static int maxStrLength;
|
|
|
|
static String result;
|
|
|
|
|
|
|
|
/* public static StringBuilder StringBuilderLowerCase(StringBuilder pText) {
|
|
|
|
StringBuilder pTextLower = new StringBuilder(pText);
|
|
|
|
for (int idx = 0; idx < pText.length(); idx++) {
|
|
|
|
char c = pText.charAt(idx);
|
|
|
|
if (c >= 65 && c <= 65 + 27) {
|
|
|
|
pTextLower.setCharAt(idx, (char) ((int) (pText.charAt(idx)) | 32));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return pTextLower;
|
|
|
|
} */
|
|
|
|
|
2023-05-07 16:46:18 +03:00
|
|
|
public static void cSubUtil(String string, int leftBoundary, int rightBoundary)
|
2023-05-07 15:19:23 +03:00
|
|
|
{
|
|
|
|
// 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 maxLength update
|
|
|
|
// maxLength and res
|
|
|
|
if (rightBoundary - leftBoundary - 1 >= maxStrLength) {
|
|
|
|
result = string.substring(leftBoundary + 1, rightBoundary);
|
|
|
|
maxStrLength = rightBoundary - leftBoundary - 1;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2023-05-07 16:46:18 +03:00
|
|
|
public static int longestPalSubstr(String string)
|
2023-05-07 15:19:23 +03:00
|
|
|
{
|
|
|
|
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: " + result);
|
|
|
|
return maxStrLength;
|
|
|
|
}
|
|
|
|
|
2023-05-07 16:46:18 +03:00
|
|
|
public static String compareStrings(StringBuilder builder) {
|
|
|
|
System.out.println(result);
|
|
|
|
for (int leftBoundary = 0; leftBoundary < builder.length(); leftBoundary++) {
|
|
|
|
for (int rightBoundary = builder.length(); rightBoundary > 0; rightBoundary--) {
|
|
|
|
if (result.equals(builder.substring(rightBoundary, rightBoundary).toString().toLowerCase().replaceAll("[^a-z]",""))) {
|
|
|
|
return builder.substring(rightBoundary, rightBoundary).toString();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
2023-05-07 15:19:23 +03:00
|
|
|
public static void main(String[] args) {
|
|
|
|
StringBuilder stringToDetect = new StringBuilder("Eva, can I see bees in a cave?");
|
2023-05-07 16:46:18 +03:00
|
|
|
String stripped = stringToDetect.toString().toLowerCase().replaceAll("[^a-z]","");
|
2023-05-07 15:19:23 +03:00
|
|
|
|
|
|
|
System.out.println("Initial string: " + stringToDetect.toString());
|
|
|
|
System.out.println("Length is: " + longestPalSubstr(stripped));
|
2023-05-07 16:46:18 +03:00
|
|
|
System.out.println(compareStrings(stringToDetect));
|
|
|
|
|
|
|
|
// System.out.println("Eva, can I see bees in a cave?".length());
|
2023-05-07 15:19:23 +03:00
|
|
|
}
|
|
|
|
}
|