Java Warmup-1 of codingbat.com solutions to problems 1 to 15. If you are new here please visit the previous post learn-coding-computer-programming-for-beginners.
1. Problem Name :sleepIn
Solution:
Hint: The problem statement says we can sleep when it is not a weekday or
if we are on vacation.
|
public boolean sleepIn(boolean weekday, boolean vacation) {
if (!weekday || vacation) {
return true;
}
return false;
//
Solution notes: better to write "vacation" than "vacation ==
true"
//
though they mean exactly the same thing.
//
Likewise "!weekday" is better than "weekday == false".
//
This all can be shortened to: return (!weekday || vacation);
//
Here we just put the return-false last, or could use an if/else.
}
|
2. Problem Name : monkeyTrouble
Solution:
Hint:
We are in trouble if they are both smiling or if neither of them is smiling. We
have to return true if we are in trouble.
|
public boolean monkeyTrouble(boolean aSmile, boolean bSmile) {
if (aSmile && bSmile) {
return true;
}
if (!aSmile && !bSmile) {
return true;
}
return false;
//
The above can be shortened to:
// return ((aSmile && bSmile) ||
(!aSmile && !bSmile));
//
Or this very short version (think about how this is the same as the above)
// return (aSmile == bSmile);
}
|
3. Problem Name : diff21
Solution:
Hint:
We need to sum for all, but if a and b are equal then we have to double the
sum.
|
public int sumDouble(int a, int b) {
//
Store the sum in a local variable
int sum = a + b;
//
Double it if a and b are the same
if (a == b) {
sum = sum * 2;
}
return sum;
}
|
4. Problem Name : sumDouble
Solution:
Hint: We need to return (21-n) if
n is less than or equal to 21 else we have to return ((n-21)*2).
|
public int diff21(int n) {
//if n less than 21 return (21-n)
if (n <= 21) {
return 21 - n;
}
else // else n is greater than 21 so return ((n-21)*2)
{
return (n - 21) * 2;
}
}
|
5. Problem Name : parrotTrouble
Solution:
Hint:
We are in trouble if the parrot is talking and the hour is before 7 or
after 20.
|
public boolean parrotTrouble(boolean talking, int hour) {
return
(talking && (hour < 7 || hour > 20));
//
Need extra parenthesis around the || clause
//
since && binds more tightly than ||
//
&& is like arithmetic *, || is like arithmetic +
}
|
6. Problem Name : makes10
Solution:
Hint:
We need to return true if a is 10 or b is 10 or (a+b) is 10
|
public boolean makes10(int a, int b) {
return (a == 10 || b == 10 || (a+b) == 10);
}
|
7. Problem Name : nearHundred
Solution:
Hint: we need to
return true if it is within 10 of 100 or 200.
|
public boolean nearHundred(int n) {
return ((Math.abs(100 - n) <= 10) ||
(Math.abs(200 - n) <= 10));
}
|
8. Problem Name : posNeg
Solution:
Hint: if negative is true return true if a AND b
are both negative. Else return true if a is positive and b negative OR a is
negative and b is positive.
|
public boolean posNeg(int a, int b, boolean negative) {
if (negative) {
return (a < 0 && b < 0);
}
else {
return ((a < 0 && b > 0) ||
(a > 0 && b < 0));
}
}
|
9. Problem Name : notString
Solution:
Hint: return the string as such if it starts with
not else return not concatenated to the start of the string.
|
public String
notString(String str) {
if (str.length() >= 3 && str.substring(0, 3).equals("not")) {
return str;
}
return "not " + str;
}
|
10. Problem Name : missingChar
Solution:
Hint: We need to remove character at n. Do a substring
from 0 to n and substring from n+1 to
string length to omit the character.
|
public String
missingChar(String str, int n) {
String front = str.substring(0, n);
//
Start this substring at n+1 to omit the char.
//
Can also be shortened to just str.substring(n+1)
//
which goes through the end of the string.
String back = str.substring(n+1, str.length());
return front + back;
}
|
11. Problem Name : frontBack
Solution:
Hint: if length is less than or equal to one return
the string as such. Else get the mid string and return last char + mid String +
first char
|
public String
frontBack(String str) {
if (str.length() <= 1) return str;
String mid = str.substring(1, str.length()-1);
//
last + mid + first
return str.charAt(str.length()-1) + mid + str.charAt(0);
}
|
12. Problem Name : front3
Solution:
Hint:
If len is greater than 3 we need to return first 3 character string appended
thrice else return the string as such thrice
|
public String
front3(String str) {
String front;
if (str.length() >= 3) {
front = str.substring(0, 3);
}
else {
front = str;
}
return front + front + front;
}
|
13. Problem Name : backAround
Solution:
Hint:
Get the last character as string, return last+string+last
|
public String
backAround(String str) {
//
Get the last char
String last = str.substring(str.length() - 1);
return last + str + last;
}
|
14. Problem Name : or35
Solution:
Hint:
If divisible by three number %3 will be zero, if divisible by 5 number %5 will
be zero
|
public boolean or35(int n) {
return (n % 3 == 0) || (n % 5 == 0);
}
|
15. Problem Name : front22
Solution:
Hint:
We need to take only first two characters if the string has less than 2 characters
we take the string as such and return front+str+front.
|
public String front22(String str) {
//
First figure the number of chars to take
int take = 2;
if (take > str.length()) {
take = str.length();
}
String front = str.substring(0, take);
return front + str + front;
}
|
Please visit my blogs for solutions for the other problems in Java Warmup 1.

No comments:
Post a Comment