From 6a26bdeb0cda464ee2587c9002151441d09c0ba1 Mon Sep 17 00:00:00 2001 From: ali Date: Sun, 3 Nov 2024 12:07:28 +0330 Subject: [PATCH 1/2] add Palindrome recursive problems --- .idea/.gitignore | 15 +++++++++ .idea/compiler.xml | 13 ++++++++ .idea/encodings.xml | 7 ++++ .idea/jarRepositories.xml | 20 ++++++++++++ .idea/misc.xml | 14 ++++++++ .idea/modules.xml | 8 +++++ .idea/vcs.xml | 6 ++++ problems/pom.xml | 30 ++++++++++++++++++ .../org/interview/recursive/Palindrome.java | 27 ++++++++++++++++ .../interview/recursive/PalindromeShould.java | 21 ++++++++++++ .../org/interview/recursive/Palindrome.class | Bin 0 -> 1995 bytes .../recursive/PalindromeShould.class | Bin 0 -> 1101 bytes 12 files changed, 161 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 problems/pom.xml create mode 100644 problems/src/main/java/org/interview/recursive/Palindrome.java create mode 100644 problems/src/test/java/org/interview/recursive/PalindromeShould.java create mode 100644 problems/target/classes/org/interview/recursive/Palindrome.class create mode 100644 problems/target/test-classes/org/interview/recursive/PalindromeShould.class diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..c43b14a --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,15 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml + +out/ +.idea/ +.idea_modules/ +*.iml +*.ipr +*.iws \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..a6d1bc1 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..03f405d --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..067963c --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ae8bede --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/problems/pom.xml b/problems/pom.xml new file mode 100644 index 0000000..3ce6efa --- /dev/null +++ b/problems/pom.xml @@ -0,0 +1,30 @@ + + + 4.0.0 + + org.interview + problems + 1.0 + + + 21 + 21 + UTF-8 + + + + org.junit.jupiter + junit-jupiter + 5.9.2 + test + + + org.assertj + assertj-core + 3.24.2 + + + + \ No newline at end of file diff --git a/problems/src/main/java/org/interview/recursive/Palindrome.java b/problems/src/main/java/org/interview/recursive/Palindrome.java new file mode 100644 index 0000000..98498a0 --- /dev/null +++ b/problems/src/main/java/org/interview/recursive/Palindrome.java @@ -0,0 +1,27 @@ +package org.interview.recursive; + +public record Palindrome(String input) { + private static final int STARTING_INDEX = 0; + private static final int OFFSET = 1; + + public boolean check() { + if (input.isEmpty()) + return true; + return isValid(STARTING_INDEX, endingIndex()); + + } + + public boolean isValid(int startingIndex, int endIndex) { + if (startingIndex >= endIndex) + return true; + if (input.charAt(startingIndex) != input.charAt(endIndex)) + return false; + + return isValid(startingIndex + OFFSET, endIndex - OFFSET); + + } + + private int endingIndex() { + return input.length() - 1; + } +} diff --git a/problems/src/test/java/org/interview/recursive/PalindromeShould.java b/problems/src/test/java/org/interview/recursive/PalindromeShould.java new file mode 100644 index 0000000..515d81e --- /dev/null +++ b/problems/src/test/java/org/interview/recursive/PalindromeShould.java @@ -0,0 +1,21 @@ +package org.interview.recursive; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +class PalindromeShould { + + @ParameterizedTest + @CsvSource( + {"ali , false", + "amin ,false", + "ddd , true", + "aia ,true", + "atda ,false", + "a ,true"}) + void chick_is_or_not(String input, boolean expected) { + var palindrome = new Palindrome(input); + Assertions.assertThat(palindrome.check()).isEqualTo(expected); + } +} \ No newline at end of file diff --git a/problems/target/classes/org/interview/recursive/Palindrome.class b/problems/target/classes/org/interview/recursive/Palindrome.class new file mode 100644 index 0000000000000000000000000000000000000000..e0b2048fee7146a2547c78746ebc90f95895948a GIT binary patch literal 1995 zcma)7U31$+6g_K8mZKP{4DWfMGZ1F-&>z5$Vz?_Qwvx0VFIw&HJ?EZt_iFXezeg_tETg3&gRBBcgNz)* z)H7?}GP;(#Yix7d^V_xxSMaYOF!JNzfZ=k~x4 zoPBO=SzX6%`(BST$d20|gbc;{h`bT{j=Nh`F^PhLDGirUJdr&PU{IW3wbu`yN9muc zlzv*nWy~;)bGJ<#rrYK}N4uujeM`eE<|15+G?0F|Y?>89PNJmYZCoKocE|FUNs&}G zD>bomO~X5aGuP$rZrCYOZEk3|iCYZ$&^y+0uU!9sztzfFn}TmaLm3s~>sUdj=C!FX z3m4-v1$^z)XgT zn&$?g<%U$Z0nbuSP`b^vwZ>{w%oxMva*8iG!b*$k82c&I9hYwmdOO^2T032GSgd=t z)ooe6Bj(AX6m}dkaPuO?q@GykVaIE4S-#cd)M$j1?GCs1NO2>y?7elXpAb)wd_NrZ zM4mb%X^-jhD~{!qp;UpGcd}iREe5sW4SbugIl^6G)a7?XYg4(7KbonBo)-q8Z}nsO zK_24;>dHb6U#a*Sbp`7hHn7QXb@WyE12=Sf+=$a9NQSYUV={&p=_7F5eQ%E&ao}Ui zZFhMsZH8MT&*ykh&}6uBekj#EHjKOU^=GJ0vnYzoiQeXL2L?6q`}Cfn{W*M)ntw>~ z)Jyn?_CBVF2Q&)2s{ak9Fa8DPMTGl=o;ivX%%9S8CXT{A+@~4EN7)!Yqj#CEB^ns2 zB!We>PY5Q!Gy0!U4l(g7Wa&W9>W6sa5N{sPP8K4?B#j_RD#l2>8l}==WRhwrie+Mv zuDFE$7f2CsVZQWx#7tS{4>2#Ym1z78a`r%|;kWT+l6{G^iWbQ0i$~C3hmRW| zKderk{-X~g-QzB^!eeaFib^X_ J(7-pC{SQI}okIWs literal 0 HcmV?d00001 diff --git a/problems/target/test-classes/org/interview/recursive/PalindromeShould.class b/problems/target/test-classes/org/interview/recursive/PalindromeShould.class new file mode 100644 index 0000000000000000000000000000000000000000..24c9ffc3d5f888f1a5ea756d82867991587e099a GIT binary patch literal 1101 zcma)5TTc@~6#fPZOP6x7*eZ%r5Vb9Z_5Ok}L84C$8r#%ZAINlfpi{QH>&$L7{wrU= zXyOm>M;XuT5_k}meVEyE&Ue0Z=3IXM`t}3BHlElR!?=Z90TY;Hm>=*FcYGckIInsG z;l>P;Ph}wEXAI-jTF1f^!)mAw92vwyjimVKDB&hb%aL$ib6*CY3Wvgm1>0~=GnA^$ zGuBqDWN@%m>lnmL0kfE6m~i{TJxn8XZCpap!a@O;QDRs&vAEVk#RJC;m2h|@o$XX1 z!$33GnYG>Ll&n+j)|%(L^mMGa8$S<2U+^Gf*s^g2S1l|SaLq)kU)+@;FZGKL3HRHf zg(ZgS|EtpKhl%eo7DiTUH>k7 z7GR60-M(}W_oUtn)m{)%WySDWWM5lr-y7t)tTpGpt=8 zAxdTOO%lX%C^}M0denA6>F_w~T_dF!Bs5^oAc-W6loN5qhni-IEc?PTQu9qZjTy8L z%XAhp08y-v1gzo~kr?NFj3Y;P`8%w4>&M9NZXBWT74u6+D8D^pn>z$(H0rj zdggh`TE-e~r;*CIgS!+Vj~P@^Bi}mVS4gu?cY`n+?=h*dso`kc)3~qkK;t199uZ&+ GkADM)pd8Qu literal 0 HcmV?d00001 From 365d5a5d16d185f14cf6d9ed1569d35202e21e8f Mon Sep 17 00:00:00 2001 From: ali Date: Sun, 3 Nov 2024 12:15:25 +0330 Subject: [PATCH 2/2] add explain file --- .../recursive/{ => palindrome}/Palindrome.java | 2 +- .../java/org/interview/recursive/palindrome/explain | 12 ++++++++++++ .../org/interview/recursive/PalindromeShould.java | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) rename problems/src/main/java/org/interview/recursive/{ => palindrome}/Palindrome.java (93%) create mode 100644 problems/src/main/java/org/interview/recursive/palindrome/explain diff --git a/problems/src/main/java/org/interview/recursive/Palindrome.java b/problems/src/main/java/org/interview/recursive/palindrome/Palindrome.java similarity index 93% rename from problems/src/main/java/org/interview/recursive/Palindrome.java rename to problems/src/main/java/org/interview/recursive/palindrome/Palindrome.java index 98498a0..c8c4560 100644 --- a/problems/src/main/java/org/interview/recursive/Palindrome.java +++ b/problems/src/main/java/org/interview/recursive/palindrome/Palindrome.java @@ -1,4 +1,4 @@ -package org.interview.recursive; +package org.interview.recursive.palindrome; public record Palindrome(String input) { private static final int STARTING_INDEX = 0; diff --git a/problems/src/main/java/org/interview/recursive/palindrome/explain b/problems/src/main/java/org/interview/recursive/palindrome/explain new file mode 100644 index 0000000..2028e3f --- /dev/null +++ b/problems/src/main/java/org/interview/recursive/palindrome/explain @@ -0,0 +1,12 @@ +Given a string, write a recursive function that checks if the given string is a palindrome or not. + +Examples: + +Input : malayalam +Output : Yes +Reverse of malayalam is also +malayalam. + +Input : max +Output : No +Reverse of max is not max. \ No newline at end of file diff --git a/problems/src/test/java/org/interview/recursive/PalindromeShould.java b/problems/src/test/java/org/interview/recursive/PalindromeShould.java index 515d81e..ffb109c 100644 --- a/problems/src/test/java/org/interview/recursive/PalindromeShould.java +++ b/problems/src/test/java/org/interview/recursive/PalindromeShould.java @@ -1,6 +1,7 @@ package org.interview.recursive; import org.assertj.core.api.Assertions; +import org.interview.recursive.palindrome.Palindrome; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource;