BAEL-1525: New changes added.
This commit is contained in:
parent
15ea8a7c01
commit
9d9045f130
|
@ -3,7 +3,8 @@ package com.baeldung.string;
|
|||
public class Palindrome {
|
||||
|
||||
public boolean isPalindrome(String text) {
|
||||
text = text.replaceAll("\\s+", "").toLowerCase();
|
||||
text = text.replaceAll("\\s+", "")
|
||||
.toLowerCase();
|
||||
int length = text.length();
|
||||
int forward = 0;
|
||||
int backward = length - 1;
|
||||
|
@ -19,7 +20,7 @@ public class Palindrome {
|
|||
|
||||
public boolean isPalindromeReverseTheString(String text) {
|
||||
String reverse = "";
|
||||
text = text.toLowerCase();
|
||||
text = text.replaceAll("\\s+", "").toLowerCase();
|
||||
char[] plain = text.toCharArray();
|
||||
for (int i = plain.length - 1; i >= 0; i--)
|
||||
reverse += plain[i];
|
||||
|
@ -37,4 +38,16 @@ public class Palindrome {
|
|||
StringBuffer reverse = plain.reverse();
|
||||
return reverse.equals(plain);
|
||||
}
|
||||
|
||||
public boolean isPalindromeRecursive(String text, int forward, int backward) {
|
||||
if (forward == backward)
|
||||
return true;
|
||||
if ((text.charAt(forward)) != (text.charAt(backward)))
|
||||
return false;
|
||||
if (forward < backward + 1) {
|
||||
return isPalindromeRecursive(text, forward + 1, backward - 1);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.baeldung.string;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
|
@ -68,6 +70,45 @@ public class WhenCheckingPalindrome {
|
|||
@Test
|
||||
public void whenStringBufferSentence_shouldBePalindrome() {
|
||||
for(String sentence:sentences)
|
||||
|
||||
Assert.assertTrue(palindrome.isPalindromeUsingStringBuffer(sentence));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenPalindromeRecursive_wordShouldBePalindrome() {
|
||||
for(String word:words) {
|
||||
word = word.replaceAll("\\s+", "").toLowerCase();
|
||||
int backward = word.length()-1;
|
||||
|
||||
Assert.assertTrue(palindrome.isPalindromeRecursive(word,0,backward));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenPalindromeRecursive_sentenceShouldBePalindrome() {
|
||||
for(String sentence:sentences) {
|
||||
sentence = sentence.replaceAll("\\s+", "").toLowerCase();
|
||||
int backward = sentence.length()-1;
|
||||
|
||||
Assert.assertTrue(palindrome.isPalindromeRecursive(sentence,0,backward));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenPalindromeStreams_wordShouldBePalindrome() {
|
||||
String[] expected = Arrays.stream(words)
|
||||
.filter(palindrome::isPalindrome)
|
||||
.toArray(String[]::new);
|
||||
|
||||
Assert.assertArrayEquals(expected, words);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenPalindromeStreams_sentenceShouldBePalindrome() {
|
||||
String[] expected = Arrays.stream(sentences)
|
||||
.filter(palindrome::isPalindrome)
|
||||
.toArray(String[]::new);
|
||||
|
||||
Assert.assertArrayEquals(expected, sentences);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue