Skip to content

Commit 5ba8309

Browse files
committed
Even Pairs
1 parent 62ef1b5 commit 5ba8309

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed

src/medium/EvenPairs.java

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package medium;
2+
3+
/**
4+
* Have the function EvenPairs(str) take the str parameter being passed
5+
* and determine if a pair of adjacent even numbers exists anywhere
6+
* in the string. If a pair exists, return the string true,
7+
* otherwise return false.
8+
* ---
9+
* For example: if str is "f178svg3k19k46"
10+
* then there are two even numbers at the end of the string, "46"
11+
* so your program should return the string true.
12+
* ---
13+
* Another example: if str is "7r5gg812" then the pair is "812" (8 and 12)
14+
* so your program should return the string true.
15+
*/
16+
public class EvenPairs {
17+
18+
/**
19+
* Strips a string from non-numerical characters
20+
* and splits the chunks into the array of strings
21+
* e.g."5678dd12y" -> ["5678, "12"]
22+
*
23+
* @param str input string
24+
* @return an array containing number groups
25+
*/
26+
private static String[] splitNumbers(String str) {
27+
return str
28+
.toLowerCase()
29+
.replaceAll("([^0-9])", " ")
30+
.replaceAll(" +", " ")
31+
.trim().split(" ");
32+
}
33+
34+
/**
35+
* Appends N following zeroes to 1 where N = number of digits
36+
* e.g. 1 -> 1, 2 -> 100, 3 -> 1000
37+
*
38+
* @param digits number of digits
39+
* @return expanded number
40+
*/
41+
private static int addFollowingZeroes(int digits) {
42+
int result = 1;
43+
if (digits == 1) {
44+
return result;
45+
}
46+
for (int i = 0; i < digits; i++) {
47+
result *= 10;
48+
}
49+
return result;
50+
}
51+
52+
/**
53+
* Parses a number to determine if digits can form a pair of even number.
54+
*
55+
* @param num input number
56+
* @return true if it's a pair of even numbers
57+
*/
58+
private static boolean isEvenPair(Integer num) {
59+
// get a number of digits
60+
int len = (int) (Math.log10(num) + 1);
61+
for (int i = len - 1; i > 0; i--) {
62+
int num1 = num / addFollowingZeroes(i);
63+
int num2 = num - num1;
64+
if (num1 % 2 == 0 && num2 % 2 == 0) {
65+
return true;
66+
}
67+
}
68+
return false;
69+
}
70+
71+
/**
72+
* Even Pairs function.
73+
*
74+
* @param str input string
75+
* @return "true" if a pair exists
76+
*/
77+
public static String evenPairs(String str) {
78+
String[] coll = splitNumbers(str);
79+
for (String item : coll) {
80+
if (item.length() > 1 && isEvenPair(Integer.parseInt(item))) {
81+
return "true";
82+
}
83+
}
84+
return "false";
85+
}
86+
87+
/**
88+
* Entry point.
89+
*
90+
* @param args command line arguments
91+
*/
92+
public static void main(String[] args) {
93+
String result1 = evenPairs("7r5gg812");
94+
System.out.println(result1);
95+
String result2 = evenPairs("f178svg3k19k46");
96+
System.out.println(result2);
97+
}
98+
99+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy