Counting Valleys HackerRank Solution in Java
An avid hiker keeps meticulous records of their hikes. During the last hike that took exactly steps. , for every step it was noted if it was an Uphil ,U or Downhill, D.
Hikes always start and end at sea level, and each step up or down represents a 1unit change in altitude. We define the following terms:
- A mountain is a sequence of consecutive steps above sea level, starting with a step up from sea level and ending with a step down to sea level.
- A valley is a sequence of consecutive steps below sea level, starting with a step down from sea level and ending with a step up to sea level.
Given the sequence of up and down steps during a hike, find and print the number of valleys walked through.
In this post, We do discuss two solution of "Counting Valleys" problem. so lets see first one.
Solution 1
public class CountingValleys{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter number of steps");
int number = scanner.nextInt();
System.out.println("Enter valleys string");
String path = scanner.next();
int steps = 0;
int valleys = 0;
// For loop until Entered number
for (int i = 0; i < number; i++) {
if (path.charAt(i) == 'U') {
// If steps == -1 then it means hiker completed its one valleys
if (steps == -1) {
valleys++;
}
steps++;
}
if (path.charAt(i) == 'D') {
steps--;
}
}
System.out.println(valleys);
}
}
Output :-
Enter number of steps
8
Enter valleys string
UDDDUDUU
1
Enter number of steps
12
Enter valleys string
DDUUDDUDUUUD
2
Solution 2
public class SubString {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter valleys string");
String path = scanner.next();
int steps = 0;
int valleys = 0;
for (char chr : path.toCharArray()) {
if (chr == 'U') steps++;
if (chr == 'D') steps--;
if(steps == 0 && chr == 'U')
++valleys;
}
System.out.println(valleys);
}
}
Output :-
Enter valleys string
UDDDUDUU
1
Enter valleys string
DDUUDDUDUUUD
2
Comments
Post a Comment