Skip to content
This repository was archived by the owner on Aug 13, 2024. It is now read-only.

Commit c9c20f5

Browse files
committed
more algorithms
1 parent c7b072c commit c9c20f5

File tree

5 files changed

+282
-0
lines changed

5 files changed

+282
-0
lines changed

src/main/java/Gemstones.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
2+
/**
3+
* @author medany
4+
*/
5+
6+
/*
7+
* Given the list of N rocks with their compositions, display the number of
8+
* gem-elements that exist in those rocks. An element is called a gem-element if
9+
* it occurs at least once in each of the rocks.
10+
*/
11+
12+
public class Gemstones {
13+
14+
public int solve(String[] gems) {
15+
int result = 0;
16+
int[] letters = new int[26];
17+
for (int i = 0; i < gems.length; i++) {
18+
String gem = gems[i];
19+
char g;
20+
while (!gem.isEmpty()) {
21+
g = gem.charAt(0);
22+
letters[g - 'a'] += 1;
23+
gem = gem.replaceAll("" + g, "");
24+
25+
// increment result only if a letters occurs in all gems
26+
result += letters[g - 'a'] == gems.length ? 1 : 0;
27+
}
28+
}
29+
return result;
30+
}
31+
32+
}

src/main/java/Palindrome.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
2+
/**
3+
* @author medany
4+
*/
5+
6+
/*
7+
* figure out whether any anagram of the string can be a Palindrome or not
8+
*/
9+
public class Palindrome {
10+
11+
public String solve(String s) {
12+
String result = "YES";
13+
14+
int[] letters = new int[26];
15+
16+
for (int c = 0; c < s.length(); c++) {
17+
letters[s.charAt(c) - 'a']++;
18+
}
19+
20+
if (s.length() % 2 == 0) {
21+
for (int l : letters) {
22+
if (l % 2 != 0) {
23+
result = "NO";
24+
break;
25+
}
26+
}
27+
} else {
28+
int oddCount = 0;
29+
for (int l : letters) {
30+
if (!(l % 2 == 0))
31+
oddCount++;
32+
33+
if (l % 2 != 0 && oddCount > 1) {
34+
result = "NO";
35+
break;
36+
}
37+
}
38+
}
39+
40+
return result;
41+
}
42+
}

test/main/java/GemstonesTest.java

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
2+
import java.io.BufferedReader;
3+
import java.io.File;
4+
import java.io.FileReader;
5+
import java.io.IOException;
6+
7+
import org.junit.Assert;
8+
import org.junit.Test;
9+
10+
/**
11+
* @author medany
12+
*/
13+
14+
public class GemstonesTest {
15+
16+
Gemstones alg = new Gemstones();
17+
int actual, expected;
18+
19+
@Test
20+
public void Test_1() {
21+
22+
actual = alg.solve(new String[] { "abcdde", "baccd", "eeabg" });
23+
expected = 2;
24+
25+
Assert.assertEquals(expected, actual);
26+
}
27+
28+
@Test
29+
public void Test_2() {
30+
BufferedReader ir = null;
31+
FileReader i = null;
32+
33+
try {
34+
i = new FileReader(
35+
new File(this.getClass().getClassLoader().getResource("getsotnes_input").getPath()));
36+
ir = new BufferedReader(i);
37+
String[] gems;
38+
String line = ir.readLine();
39+
40+
gems = new String[Integer.parseInt(line)];
41+
42+
int q = 0;
43+
while ((line = ir.readLine()) != null && q < gems.length) {
44+
gems[q] = line;
45+
q++;
46+
}
47+
48+
actual = alg.solve(gems);
49+
expected = 5;
50+
51+
Assert.assertEquals(expected, actual);
52+
53+
} catch (IOException e) {
54+
e.printStackTrace();
55+
} finally {
56+
try {
57+
if (ir != null)
58+
ir.close();
59+
if (i != null)
60+
i.close();
61+
} catch (IOException ex) {
62+
ex.printStackTrace();
63+
}
64+
}
65+
}
66+
67+
}

test/main/java/PalindromeTest.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import org.junit.Assert;
2+
import org.junit.Test;
3+
4+
/**
5+
* @author medany
6+
*/
7+
8+
public class PalindromeTest {
9+
10+
private Palindrome alg = new Palindrome();
11+
private String actual, expected;
12+
13+
@Test
14+
public void Test_1() {
15+
16+
actual = alg.solve("aaabbbb");
17+
expected = "YES";
18+
19+
Assert.assertEquals(expected, actual);
20+
}
21+
22+
@Test
23+
public void Test_2() {
24+
25+
actual = alg.solve("cdefghmnopqrstuvw");
26+
expected = "NO";
27+
28+
Assert.assertEquals(expected, actual);
29+
}
30+
31+
@Test
32+
public void Test_3() {
33+
34+
actual = alg.solve("cdcdcdcdeeeef");
35+
expected = "YES";
36+
37+
Assert.assertEquals(expected, actual);
38+
}
39+
40+
}
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
100
2+
xbjgnzcbefeiewwlgkdqcpbmkrahdxjbqbsrxmrasfydooadhllbkaxrfwodkrhcddcbplsrylwnmyecpqyo
3+
dyinmxhpcecfalcqvciehekkhkzxxkhabqowpbnroztcacrqzxpjcj
4+
ceaunnagbqbwyod
5+
kexouruyoasgdqmuhedbeudnctacb
6+
yeyyrcooiugsmcvjeaiuynflbubmwlvodxjahdmxeiaybumkhzjiutulpaudqh
7+
cbedbnnseadwwhmdbqdypdygxxabjpjpmyjvbtcfqhpxudyvyuhpijceuaqxpsyonixujyzsveiyismvmzjg
8+
pceqybbwwddvaahegvybuljgaeejvxpeciijwg
9+
znuvglxfdzlemucawupusdrxligctjnbfpnyes
10+
cjqeglvhhnhboapharbdrhccsxhymrebmdrzaaejlskunfoeemgqwwyuenk
11+
fmazwnvujncsvvuikpomrqtqglkadpuxgdnpcfjagetcfpbnedvneridcbebfncfwgtypkpxroueutzruqqnscxyhmyltpxae
12+
ccwuvqjvnbmhzqbcgfodagpatxezvbcxtakvgejxofzlpqdjvgvpiljjnlskqcefd
13+
uoydurgfibgpqzhavqpyeafbxdwjlbzjcshxw
14+
jhercnaxdb
15+
rbrhzwnatsehdglzpemabnegwgvamgpihxksrrfwtductysfquegrmvpwndejmtvuxfdbzt
16+
mtbjsbgwvhnlmadvjxwmbzsueclpkpzapzbfjasfgcmmhwqkuppnqnaczdprccfghndjklavynwimncgkzlzneoeeowtiemd
17+
ivnfwsouowwquqtditgdyasjapldqvbjsbakcagbbecrmljtbps
18+
tcbyedtallivfjcujwvfsnshssekkwztozepdwdbqqotbaxgeqshdnayaortmfzqlzikyddrjnwlftahksonelph
19+
qcadulfayeadabinlgmv
20+
nzsxqakawcimaqgbxeyadtkwnc
21+
asvlqhronoopizrbcfaniahqhmiggqxbjgdgxhntinemzqxkpybxczxsoizwvxpkxmitdjqmiysxfymrvereiyezvbcwbijrkdna
22+
dsjzpsudtqqwletvwwbuaqkgvrqbuvbophjjxpqmfxfppacbewvehxfyoenibyustotrpqdqowrdificaalzqmbeetltcjnd
23+
qoqujsbvrsdxxoqvhforddjyogkaeglfyhrqqneytlvuzjrskecylgcyufnhtjhauqrwuemuuslyoiwlafmneeupxde
24+
swituuanmgoeytrelxlginaybmtfrmuwztoztfxusssrposxqncpcouxqdldqqpbefzqdnakikoeiqmpb
25+
rcihacijeexmbwfeaoucrixjkdwbukxfsiusiawavvbcjfvfdakkxaqqutaubfjtypxykouctuyqvdbfksj
26+
ubgdaqnicvehdadakwsqmwoauqbx
27+
dadcsheloxgmtjwiyvshkbaldxqtlrfkayepdhaa
28+
daeblzmtqtapfdckvmkljdqbnppociihmxicyxhadecib
29+
hlaewxchodtqkdedijcbgccbxpvzg
30+
fnacedfieoxrgonccaoietznhlaszjayb
31+
iymyntnhnjkqmggmaodnldvadtntbtguhdhwibmcqquie
32+
qlqevowcirczdxerwobdhxyawraqhd
33+
qftcpcfecwzvdrecoxgdqlxnsepurtdaufxbnydvdbjuibdeqzguyorqbjclmfrgefosrvznplmbcjbxzpvephzsfbaihdcd
34+
uxfzomxkfifjwnaidceafdveepzwgbpwfcrnshcdifomtbhaqrnubidplnzlssdrg
35+
nrjdoczciklyzduednmlmzrvlkoqeiqhuyapyvayaqcfiajeowjvaapdkbwosvasacoaujgonhleeaetztgm
36+
qleoasrbsmugemdvzrzlcxfpzmcoluxkeoxbnrokblddzwavkifczbzkypqotlzatczxvfyetkvnxi
37+
cejkbcadfu
38+
pecbda
39+
yejvybfynjpscdajdgofebmyafdrejypu
40+
owdjttejyjdpbjwhajimrkjicvhqbyxgaaqtwmntqcozzstcnjjyaqdcifzekpkejwo
41+
jbbtffaqznihszvxhyiamevunwycqmkizusmgcxetfverbkwhtzvyqhdspavfqmqhxtenbqtxigscqhoto
42+
adnebcif
43+
pdezpvqofqdhphurmfnrcjwzicytwuiscacxdpzgrvzrfbxydokaitbbthihmojshzosjqioen
44+
rfalshmmhgjzwstanxfdzdnethyvthxnamhxslduroagcchdgbmkolqgcdvciecnlzioicxojflixinvdrfbmzk
45+
hyojfndxzvhsnhgmefmofkvbcxnczbwiwrbiccsdtcdaxqdbncpeztrhbuak
46+
xbdsjvdzrghvcfmezagzlriojcjtyhohyeepofnqgxrhtdarjnqhqvkarzsyaiejljqtjeu
47+
xmdqtrimewhordixbwdacj
48+
garjnbfbenmdcaqhpavtjcqbbgyibvrf
49+
bxbqjxzppdnbepkcltcjdyscpfkqnctbjqsyedeoila
50+
xzaxbjyrwjdiklpknyybrcrmhfqvfleadmaxbeyzfzy
51+
aaauzkivevycwgxcxlzvxwyvgbseobzrictkajtowpcdsjwdrstcqfagnfedatazsvrabtpzownidadehvcfhjktr
52+
adicfcdaijqzejuecuhwwjzaddbyc
53+
acblrtvokdfbczxmahgdgcienpecrddnqqoqbpeocvllpppoelakaqagytdubfuougrubxsaghyowbaf
54+
geidamsduiczhmwibwpj
55+
rcabedwehpwe
56+
pvbzakmejryerbwaeawztmyekscbpezfd
57+
rlgmjxcpdcmliclyfycjytzktipxqemioxntmqwlfljljabveuegnwwrajmqzpzlopujxumekvcadbxlmydxn
58+
ykjjktysfeasattfytljheipidnlgwdpelauvvkfqllexvekzrcoztbtg
59+
abdbcalabwgrcuef
60+
kxmakpfdmkdjetabovegrxnoqvslznptfsifmiellprgwtncvbiazhbkbs
61+
nwzcfdgygbbwcaahovejmaezxadlykpixbpnvrzhal
62+
gbabfchioulmdedbsszyd
63+
evaraucdsktulvszcekpakzrhblydccrnmxd
64+
bdmeca
65+
pmgnevdlreebvhabqvczgcfpvxnqsbjvpbhexpuagcvqdlfa
66+
ulqfgsbcdjhkwbeamuyeqmmhledwtmojokjcsitrpxazkcmzkvibpyocdozirbpgplkogzfssbnuucxefxtfeucsiasnseguicgj
67+
bcvcecacdwqa
68+
taascnubydmffssiqeux
69+
wlxandcdjeoyacglgnjiadppgbgqsgipjxtvvcemg
70+
lladcbec
71+
jusqqbeirdbeklzcrfeasqmekuodcenphfcaao
72+
zwjrgewmaibfwcufnjehokqumhjjzixcfjajqbatadphzyyjuoni
73+
ctalwdseikysbsqc
74+
tckdreiuqaaljufcyeighnrdhmvrrqvciiddkxlabnhqiiappackgfyfgftrvxvqekarvacnkeqtnuinnnuxxlrbsobjc
75+
syhworlfmfwzssxxsbtutfmhxtibooofkhcmxbumptaryghkuodfxxoeryxikhoineoylzfereamellsdezftoddckljwdrto
76+
tncrvbqskefdaukqddbmirjv
77+
homocmscptyscaaumhzcygibjdynocevnctuomigcqdgebsrehsyrudubqxcxdbgrdbovpmc
78+
fjohmlslfvblmgmyqxyxioxqyyswjdpcuplnccwqheeabjnjygwgejeudadmbdnhbwtlfchrwcjyyqwzl
79+
dcbaec
80+
wanlqedmfborsmaoeuvidvokdetaoslkqgptsirfjnxdcrgytoev
81+
dzhpqrbeouniijgexokcofzbtfbehwfqlnapipewltjvbubmsxjagthhpahjvprcumhjsgmenxyqgcgkrgetbt
82+
gzaqhivbotdpicgguwdaqfbemgsshaucewvtmavjfbvqrkropohxakiyzchepugzielq
83+
cjuwersedyumkotbxubzudipnqzmvimybwhzrcobavcmsgdvnuajteabuwafudctvhnvllgpyqwnudufvvwkwqexovcdpvj
84+
hfdroludcbazubrsibkxdpyvmywe
85+
pbblffcppkcwgaseaxdhtxmocqsyauvjrsgwawibsaapcymsxgbzreoygqosplszibiqcegvmgsoumebxmpgwrdnjvkjx
86+
psrsarsiqdknujctirwmeujhbcmpcbinanghsbrewappebhxuutkffzatbuqvcumabypwrzzzminpzjctrofkhtpfwsjdiz
87+
beubacoddzujhdb
88+
tdcxxblqjbssfrbaxngeafsca
89+
tpsxnboiimrufwpcdyyxabcmakczvveqwmfzdgciobtkyahdpeliezrhuzioss
90+
xypbmwhxpbhajjihueapjgebpnxwjqislijodcjpetjkftxedohaxpbgamtopvjawjuzsboqhwylkummzftmbg
91+
mguqyeaabhzxmiscbfppwkojsxtggccxqntlczpsvqpjuqxdsazqr
92+
evmbdhrpxpjowoozioaggphbtjbmxqmctgpplueknxcflrfxpvofbkqbazaikmpklujwyxgiyezybyzwonmdwddjizntztyt
93+
fvfjyibpzmbocdjaztbvumoxezggjqahveqowxazrewdhqzggczugtyzoksdiwqdtvbrespdpvamzwlhevcwbli
94+
hbdwuhcedga
95+
svaqwamedizsuckzleqwcaiifsycdb
96+
isnbrmfedenkvkakmnybwnvnokqcslwzenzuphdcbhzpimttlafb
97+
zaypwnvdijymxvxzzjezeldoiayeigzymjcnmyqtaustpeginnmvroseqbzfuobdypbhlcze
98+
cexadqudbj
99+
yikhozyinajjhhcohcycyeaomwpkexgplxmjkobhkuboqklybigjwcxeaahecepyqxamnmwhdvjppdweroczgyppnef
100+
byuwrtiwzatpehucqydsfamgubcplpjggbvbspxmuqbfkilmnefegpygbofsznqdrjhemvwdkhloqzazkhlnlgz
101+
vslimfgudqmzexdwvhycratfsvjuvuznrbxecblaunimezoyjgyryjitebmsudiscletcfwzwnnnnuvbrahyb

0 commit comments

Comments
 (0)