Skip to content

Commit

Permalink
#7 - isPalindrome
Browse files Browse the repository at this point in the history
  • Loading branch information
obriensystems committed Jul 22, 2024
1 parent a30f6b0 commit 352204f
Showing 1 changed file with 28 additions and 12 deletions.
40 changes: 28 additions & 12 deletions metrichash.map/src/main/java/com/metrichash/map/ScratchPad.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ public void optional() {
srcOptional.ifPresent(e -> System.out.println(e));
}

public boolean isPalindrome(String input) {
boolean criteria = true;

public boolean isPalindromeViaStringBuilder(String input) {
boolean criteria = false;

/*
* abba
Expand All @@ -50,14 +50,31 @@ public boolean isPalindrome(String input) {
* Optimized: compare a reversed string - if not equal - not a palindrome (abaa != aaba)
* Simplest: StringBuilder.reverse
*/
if(input.length() > 1) {
String reversed = "";
if(input != null && input.length() > 1) {
StringBuilder builder = new StringBuilder(input);
//input.chars().forEach(x -> reversed + = x + reversed);
criteria = input.compareTo(builder.reverse().toString()) == 0;
}
return criteria;
}

public boolean isPalindrome(String input) {
boolean criteria = false;

/*
* abba
* Algorithm:
* convert string to IntStream
* Brute force: iterate from both sides - once a match is not found - stop:false
* Optimized: compare a reversed string - if not equal - not a palindrome (abaa != aaba)
* Simplest: StringBuilder.reverse
*/
if(null != input && input.length() > 1) {
StringBuilder reversed = new StringBuilder();
// reverse

input.chars().forEach(x -> reversed.insert(0,(char) x));
// compare
criteria = input.compareTo(builder.reverse().toString()) == 0;
System.out.println(input + " : " + reversed.toString());
criteria = input.compareTo(reversed.toString()) == 0;
}

String result = criteria ? "true" : "false";
Expand All @@ -66,12 +83,11 @@ public boolean isPalindrome(String input) {

}




public static void main(String[] args) {
ScratchPad pad = new ScratchPad();
pad.isPalindrome("abcddcba");
System.out.println(pad.isPalindromeViaStringBuilder("abcddcba") ? "True" : "False");
System.out.println(pad.isPalindrome("abcddddcba") ? "True" : "False");
System.out.println(pad.isPalindrome("abcddddcbdddda") ? "True" : "False");

//pad.optional();
//pad.matrixReductionForAdding();
Expand Down

0 comments on commit 352204f

Please sign in to comment.