From 90c6f47fb8e95b98dcea77f5fabe070958fb2184 Mon Sep 17 00:00:00 2001 From: johnS93 Date: Thu, 1 Jul 2021 23:37:07 -0400 Subject: [PATCH] I have finished --- .../java/io/zipcoder/StringsAndThings.java | 110 +++++++++++++----- .../stringsandthings/GIsHappyTest.java | 2 +- .../io/zipcoder/StringsAndThings.class | Bin 0 -> 2270 bytes .../ContainsEqualNumberOfIsAndNotTest.class | Bin 0 -> 1323 bytes .../stringsandthings/CountTripleTest.class | Bin 0 -> 1321 bytes .../stringsandthings/CountYZTest.class | Bin 0 -> 1372 bytes .../stringsandthings/GIsHappyTest.class | Bin 0 -> 1210 bytes .../stringsandthings/RemoveStringTest.class | Bin 0 -> 1308 bytes 8 files changed, 81 insertions(+), 31 deletions(-) create mode 100644 target/classes/io/zipcoder/StringsAndThings.class create mode 100644 target/test-classes/io/zipcoder/stringsandthings/ContainsEqualNumberOfIsAndNotTest.class create mode 100644 target/test-classes/io/zipcoder/stringsandthings/CountTripleTest.class create mode 100644 target/test-classes/io/zipcoder/stringsandthings/CountYZTest.class create mode 100644 target/test-classes/io/zipcoder/stringsandthings/GIsHappyTest.class create mode 100644 target/test-classes/io/zipcoder/stringsandthings/RemoveStringTest.class diff --git a/src/main/java/io/zipcoder/StringsAndThings.java b/src/main/java/io/zipcoder/StringsAndThings.java index 073467a..f44ae49 100644 --- a/src/main/java/io/zipcoder/StringsAndThings.java +++ b/src/main/java/io/zipcoder/StringsAndThings.java @@ -5,64 +5,114 @@ * @author tariq */ public class StringsAndThings { - /** * Given a string, count the number of words ending in 'y' or 'z' -- so the 'y' in "heavy" and the 'z' in "fez" count, * but not the 'y' in "yellow" (not case sensitive). We'll say that a y or z is at the end of a word if there is not an alphabetic * letter immediately following it. (Note: Character.isLetter(char) tests if a char is an alphabetic letter.) * example : countYZ("fez day"); // Should return 2 - * countYZ("day fez"); // Should return 2 - * countYZ("day fyyyz"); // Should return 2 + * countYZ("day fez"); // Should return 2 + * countYZ("day fyyyz"); // Should return 2 */ - public Integer countYZ(String input){ - return null; + public Integer countYZ(String input) { + int count = 0; + String[] arrayOfWords = input.split(" "); + + for (String word : arrayOfWords){ + int numberOfCharacters = word.length(); + int lastIndex = numberOfCharacters - 1; + char lastChar = word.charAt(lastIndex); + if (lastChar == 'y' || lastChar == 'z'){ + count++; + } + } + + return count; } /** * Given two strings, base and remove, return a version of the base string where all instances of the remove string have * been removed (not case sensitive). You may assume that the remove string is length 1 or more. * Remove only non-overlapping instances, so with "xxx" removing "xx" leaves "x". - * + *

* example : removeString("Hello there", "llo") // Should return "He there" - * removeString("Hello there", "e") // Should return "Hllo thr" - * removeString("Hello there", "x") // Should return "Hello there" + * removeString("Hello there", "e") // Should return "Hllo thr" + * removeString("Hello there", "x") // Should return "Hello there" */ - public String removeString(String base, String remove){ - return null; + public String removeString(String base, String remove) { + + return base.replace(remove, ""); } /** * Given a string, return true if the number of appearances of "is" anywhere in the string is equal * to the number of appearances of "not" anywhere in the string (case sensitive) - * + *

* example : containsEqualNumberOfIsAndNot("This is not") // Should return false - * containsEqualNumberOfIsAndNot("This is notnot") // Should return true - * containsEqualNumberOfIsAndNot("noisxxnotyynotxisi") // Should return true + * containsEqualNumberOfIsAndNot("This is notnot") // Should return true + * containsEqualNumberOfIsAndNot("noisxxnotyynotxisi") // Should return true */ - public Boolean containsEqualNumberOfIsAndNot(String input){ - return null; + public Boolean containsEqualNumberOfIsAndNot(String input) { + int countIs = 0; + int countNot = 0; + int indexOf = input.indexOf("not"); + String currentString = input; + + while (indexOf >= 0) { + currentString = currentString.replaceFirst("not", ""); + indexOf = currentString.indexOf("not"); + countNot++; + } + indexOf = currentString.indexOf("is"); + while (indexOf >= 0) { + currentString = currentString.replaceFirst("is", ""); + indexOf = currentString.indexOf("is"); + countIs++; + } + return countIs == countNot; } /** * We'll say that a lowercase 'g' in a string is "happy" if there is another 'g' immediately to its left or right. * Return true if all the g's in the given string are happy. * example : gHappy("xxggxx") // Should return true - * gHappy("xxgxx") // Should return false - * gHappy("xxggyygxx") // Should return false + * gHappy("xxgxx") // Should return false + * gHappy("xxggyygxx") // Should return false */ - public Boolean gIsHappy(String input){ - return null; - } - /** - * We'll say that a "triple" in a string is a char appearing three times in a row. - * Return the number of triples in the given string. The triples may overlap. - * example : countTriple("abcXXXabc") // Should return 1 - * countTriple("xxxabyyyycd") // Should return 3 - * countTriple("a") // Should return 0 - */ - public Integer countTriple(String input){ - return null; - } + public Boolean gIsHappy(String input) { + boolean x = true; + for (int i = 0; i < input.length(); i++) { + if (input.charAt(i) == 'g') { + if (input.charAt(i+ 1) != 'g' && input.charAt(i - 1) != 'g') { + x = false; + } + + } + } + + return x; + } + + /** + * We'll say that a "triple" in a string is a char appearing three times in a row. + * Return the number of triples in the given string. The triples may overlap. + * example : countTriple("abcXXXabc") // Should return 1 + * countTriple("xxxabyyyycd") // Should return 3 + * countTriple("a") // Should return 0 + */ + public Integer countTriple (String input){ + int triple = 0; + for (int i = 0; i < input.length() - 3; i++) { + if(input.charAt(i) == input.charAt(i + 1) && input.charAt(i + 1) == input.charAt(i + 2)) + triple++; + } + + + return triple; + + } + } + + diff --git a/src/test/java/io/zipcoder/stringsandthings/GIsHappyTest.java b/src/test/java/io/zipcoder/stringsandthings/GIsHappyTest.java index 020cd3d..9c150d9 100644 --- a/src/test/java/io/zipcoder/stringsandthings/GIsHappyTest.java +++ b/src/test/java/io/zipcoder/stringsandthings/GIsHappyTest.java @@ -33,7 +33,7 @@ public void gIsHappyTest2(){ @Test public void gIsHappyTest3(){ Boolean actual = stringsAndThings.gIsHappy("xxggyygxx"); - Assert.assertTrue(actual); + Assert.assertFalse(actual); } } diff --git a/target/classes/io/zipcoder/StringsAndThings.class b/target/classes/io/zipcoder/StringsAndThings.class new file mode 100644 index 0000000000000000000000000000000000000000..3f01e018b0c7663c5e5c3de85fe80ce194f13796 GIT binary patch literal 2270 zcmaJ>T~iZR7=BK&*{SW;SozArMIVYR2R4kD2?t9*k=Y5{{?63d){06`U+>axI zr~%DF47xz?rv1duR%~xQySTdPlo|s1r0cnjX@ThQ$chP5Kn%qZN4EjX!T}uIleN_F zU2k0=R7UjWV3rY0zptNE8Gpwo& z7e{8}IEs{kV-}8MK%j58Ptj{Q>y9sAJh3ZHXK_uSpBbU9K}5mCpa46>F=XLAoMejc z)GBt#5x5$LKFiKa&f})zm7GGT&>nxdLolm}_c@1GZO9%US~!hi_Hezj^Noa+4EJc$ zqh=npkinRM72vt<`gKlzai4?`oOX$~T_(;5MBI8DAK|QlbCR|5dsw?ttyUb{lU&^o zPZIbG20j)TaI4v8Zmm=;JASs+tv=(Gmp7<-ox;rWK%i&N^_+#~qgBUWwpT0kB<89m zyRu^Yu6z!hT4Tdy(%{_x6)ljjQnl$d?%jXKI)#R9>&k|nYQMN96|zeW$7d%|6zHnh z^+r(&AYe*c2JmQ>=)bP|Wr=lnl>$P!(5_c&Qh=DkLS1a%x1TPq-C+tVAKGW91r97V z?9#(|yQT&bve! z2ya`gHfcp-GZkc&exTI!eaCCG+nejf`c1o5drAUae#nU+&D|`JFJDqo08S$lR z(=R#KUFl8!SN$`RHD00%e5J@A9b`*==lGQ66R#R#qd!6XNF#!YAP6vUk+#(ez$N7Q zBv8O4znLrwjP9myIXaa|7~AMt7|&}d?M*Hg&FM)!8GDI|l$O-b<&6}Ndva#d)XKT8 zl#%S(#-Ut18Sj1i0`lLpE$Gi9;<+wf?ff$E8b^L$-KfGc$}0-Kf+9$u3x{!%Z=DhJ z6Z#S2JBsT_p-BHC(hBb_m^>fC6sBoqaSWf(>f%`+E@Ot(PV&BA!7S$^_Fyh)U8Rq= z5w~!S84>1u#_BhS<0d2Lq3y7ZVc>#+xG+%UpCEZVI4fVfd%QBDbr#tt<4-Ce@F~Vx zM6yYgzkrz;OQg4PLJl7mBBKTyYQ=N_n}jC;GY@mLBDCkR(5fktjMjNpj!s3VGl^5% z_#mfc^0B1$Ez+r2;*{((l8;GKojs3|`#<f%Fy(?G?1>Yh-uD z%Htq=P7upQXhdppX?nOYhbhMik~&N=&QOF23NT5`H%R*DqJ=FW`ejwq`X zSc;Wxv&?2;Z}a#-;_0 z6s0rV(3cp`kd{Ne>sv@?(%J)Mzd#@Da$v`zQ;MqJxu&7X2ZMEr5R1im`f-Po-sOA! zHZRLpYPwOj({K(;3O^fn<}7sPyu?Mk%{k@DbtC#WG$As7sfAf--#mP$3IUT+T!maO zzr>ir9>Cthk-*BNV{(q*hDnuw+k3-~Dbigw-K2aE3A@6T-lRyi5bX0E*pnUDlO5Q3 Sjw|H}!yaqFzRO7>xc4uuQoy|c literal 0 HcmV?d00001 diff --git a/target/test-classes/io/zipcoder/stringsandthings/ContainsEqualNumberOfIsAndNotTest.class b/target/test-classes/io/zipcoder/stringsandthings/ContainsEqualNumberOfIsAndNotTest.class new file mode 100644 index 0000000000000000000000000000000000000000..fd51ca8fedfb7c8ed1e9a115ba0ce88426a4f3ed GIT binary patch literal 1323 zcmb7DYflqF6g|@dTb31QQ3R#POK6L-^6*(h1R@DZQxa*K$hT=3>NLwN?!$op%0$6v z;t%jg8Sm^?T0t-*o4a@J%sJ=YJ9mEm`t}3B3Z9!tAZeh>LN|IC2Ali?w;iq;_I9l) z>H$N~OQ~eA%8<#6@T6+^Yih6ZPCF(HBzw^Z%fJl_{TN_a z?F9HSfUCVA0@xd_3b<7M>-Qmd%Hcsxc-#A1nz8H#72#73gDudR3d4A*lk|KR#T3#E zeUy?vL7#F1o!5|so4Cc0tzRX{FqbQ}`w&wX^Btje*L4I}MH9C%Vqnz59o%I|w?VBF z3|1{ZTjfqDq8{#=$YR{UJqr_sGLf?#E|%^;e^>e|trSZeIl9A;ajKPzCZpR4E(MSyPl552UL|hEh1|!@Aga zJwd<$p=V;tFUNzhNYlvc0fiWb{&64F%nlYkIu|*XF0d|B_jcUStBXykn=$*}fn3lR zjY%5v1id0gmd2dCZu03FkEAe%0*4AF+rjUNtHyJ20xkUcBo6rZr$CI>c28k zA)5FD{87et+uBwNF=0QPJ##tlGv}O{U%$Wq1h9?A34{>V5YZ7uOdxeEPo+_lcGcJ~ zA1l)rh&{Dz%YP;i&SXm(;sP_4V|=perc+U_ap1d_UG;YCO7VT*B%mQYgkk6!Zs@p) zq`+E#fY%O?cExW67`slx_KU7nuc@N)NKAFMbTtL$3jGonnfU}pkk&A&V+`X0BfTv4 zY+qHCE1;dqT0`w02~1@6vW0;i`8aL~49T*2cz8$~0*Nf#Vb)=JW~f^lau!Uhn#{!eZH*PgsU z)Kh+=E-?9qjk8Wv$?`0!?%1~DOW$&AiW1mO_qjT9T*bgtUmb&1ZwSOyv(9U#DgvW@ zxpvydn3yzumWRQ8ib3!tdYglYErG;=({N4o(h3SOcHy?I2NwYgyssfX2tmsmOD{^F zFM{?SM+W~Qn9ZF*e5Mn^3T?0q#F3%Z+Z&KYjw69pu7+B{PY`ac>A4@!-kxFTD-u18 z-~ocrVPbnadPirCYXRkcOLM)e`HoRx&W%UTS(w}xB+?V#aQoHj+Bs%=;%P*;KeJ!Qv^>_bcW#BYk{{1!Qn1= W`AYBt!HWbh5xjgY@I&Su!lOS-rw`!( literal 0 HcmV?d00001 diff --git a/target/test-classes/io/zipcoder/stringsandthings/CountYZTest.class b/target/test-classes/io/zipcoder/stringsandthings/CountYZTest.class new file mode 100644 index 0000000000000000000000000000000000000000..00174b62d55e91642333b3b0a42687935376fc1a GIT binary patch literal 1372 zcmbtTYflqF6g|@iyVOOwriNSS z6DYU5p*=il|&%eHY^j zCNvZ<$$o67sqgu8P+xIf>99r32!l7De52)_1MZq$iBUy6rJ9O+)WaSN>{Z1Bf!=V@ z>2wYSQmecTfxfC~$#s8!M><=^PK!JFs$Dl)HN!E3b+nnH^`tJJarUx{sR*Q9>G^Ge zk@vhVb6?g>*CgVKW!awLnYKkhlAW~sTJGA8WT6&$7+mlIaZIc2(}sMk$;eLuReo;s z)yalHe=Hwe9>IEyx<}t=Y>X;EK1Z~8mUl@YvuXQIUA{E~SF*83Hy=C!O!CPl_$LHM zK3Ya;#{3i$7vm7(0a@ zWEbFnNMZ;ohDkKS)o4gn?m|RVNer;hMLQhi2)HQ`Xxj@MMs|cB@Uat5ikG% literal 0 HcmV?d00001 diff --git a/target/test-classes/io/zipcoder/stringsandthings/GIsHappyTest.class b/target/test-classes/io/zipcoder/stringsandthings/GIsHappyTest.class new file mode 100644 index 0000000000000000000000000000000000000000..feefb49bf0f5d6d7052a34465234c55e266f048c GIT binary patch literal 1210 zcmb7DYflqF6g|@i+b#>VMG=%15s*HVm50w7lVXCJG?+-!M7~Yiv2L^MHv2HG|H?$c zXyOm>M;Y&Im$o)S!k5`QbMHB4?wPy4|NQs`U=L4KL=aUF(-6lLL#o3+aoyxrTYuZ= zh^EId_1v%w?*&6NU#KfcFf1Fk{@Lg@?Ur!#BhN9cwp+1UwU07Tp&**XG&BV>8fG!a zP#6ce0|2*LUI5Tvy>VajZns|(F3F|B{E(0#R~^Ss3YHT{(=B_wcDvV;>hl_|;W|U2 z9TGEa=BuN|1_b58*wMain}S^*x#^3*lw%cHYkwBgy zDf{a8sf>Ux$#I6cs$q#k|D++D8gH0%lBwEFZq~VD$bEPiBYRzj(m&>1YJQn+_HW4epB%wj&5Qb8fbL#cg^I-t>HKGR*(SX7Xr^ zLn0;_b|x5i$-^VtcbekBkR7MThh|GY6IN;FA~e*DR+>7B;uO4Jt*#Uk-91?&q0RLHI(fgS7;|GCay sp!4toojW6)^+}y9>EuXfZD-GV zyL%w(fk5w5<*4A9K)P6}Wswt@RIc?|9o5~2^sJr0Q_h~h=`^bQI>;l7bRYU*WO2>F zbqokBB@6txz;+rzRA6n(L-$z5I#uZtIoR5BCMqyhNorh#Zsaf|klT`lU|)JNhZ_R@ zTe8`7+ldjLpHqFhQ3GQb7cjg8Sm1H7a^8Fl*yzlZI#YSv!ekb=4NPI0hj+a_>ma0O z)~4@EkNp^S6ukTx+D%_zK1qsgPLf)gQZ0uW-BjF#m&08F!QN*1IT6Ubp#K5`73Ih` z;o+|Is`hS^8METn?PksPl%BVe8JbPB^`DI`n=k(r8v;GP48kLU@$JwF)S;{?Ur~0` zaooTTlQFD8@i~&ZeBLK9?&GZn2^-9 zT?JRWQPu?VJ8tOJ_7=ZoXbv{DFycaT6JC8s*k8b~TP+Ohk}ET-<`BiMDW` zm;nM-7^Tn#uSVdtF5p5NeCJZ|6fx5jEf73&CGdI|u-OLRyA(W2@EpPO1Q)Lae!#v{ Gc=!+GL<^b# literal 0 HcmV?d00001