fix: counting Valleys
This commit is contained in:
parent
9c622c1aa4
commit
29251ff399
112
CountValleys/CountingValleys.java
Normal file
112
CountValleys/CountingValleys.java
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CountingValleys
|
||||||
|
* 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 uphill, ,
|
||||||
|
* or a downhill, step. Hikes always start and end at sea level, and each step
|
||||||
|
* up or down represents a
|
||||||
|
*
|
||||||
|
* unit 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.
|
||||||
|
*
|
||||||
|
* Example
|
||||||
|
*
|
||||||
|
* The hiker first enters a valley units deep. Then they climb out and up onto a
|
||||||
|
* mountain
|
||||||
|
*
|
||||||
|
* units high. Finally, the hiker returns to sea level and ends the hike.
|
||||||
|
*
|
||||||
|
* Function Description
|
||||||
|
*
|
||||||
|
* Complete the countingValleys function in the editor below.
|
||||||
|
*
|
||||||
|
* countingValleys has the following parameter(s):
|
||||||
|
*
|
||||||
|
* int steps: the number of steps on the hike
|
||||||
|
* string path: a string describing the path
|
||||||
|
*
|
||||||
|
* Returns
|
||||||
|
*
|
||||||
|
* int: the number of valleys traversed
|
||||||
|
*
|
||||||
|
* Input Format
|
||||||
|
*
|
||||||
|
* The first line contains an integer
|
||||||
|
* , the number of steps in the hike.
|
||||||
|
* The second line contains a single string , of
|
||||||
|
*
|
||||||
|
* characters that describe the path.
|
||||||
|
*
|
||||||
|
* Constraints
|
||||||
|
*
|
||||||
|
* Sample Input
|
||||||
|
*
|
||||||
|
* 8
|
||||||
|
* UDDDUDUU
|
||||||
|
*
|
||||||
|
* Sample Output
|
||||||
|
*
|
||||||
|
* 1
|
||||||
|
* Explanation
|
||||||
|
*
|
||||||
|
* If we represent _ as sea level, a step up as /, and a step down as \, the
|
||||||
|
* hike can be drawn as:
|
||||||
|
*
|
||||||
|
* The hiker enters and leaves one valley.
|
||||||
|
* BlogScoringEnvironmentFAQAbout UsSupportCareersTerms Of ServicePrivacy Policy
|
||||||
|
*/
|
||||||
|
public class CountingValleys {
|
||||||
|
|
||||||
|
// /\
|
||||||
|
// _ / \_
|
||||||
|
// \ /
|
||||||
|
// \/
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.println("Please enter the number of steps: ");
|
||||||
|
Scanner sc = new Scanner(System.in);
|
||||||
|
int steps = sc.nextInt();
|
||||||
|
sc.nextLine(); // consume the newline
|
||||||
|
|
||||||
|
System.out.println("The hiker is taking " + steps + " steps starting from sea level.");
|
||||||
|
System.out.println("Please enter the path (U for up, D for down):");
|
||||||
|
String path = sc.nextLine();
|
||||||
|
|
||||||
|
sc.close();
|
||||||
|
System.out.println("Number of valleys: " + countingHikeValleys(steps, path));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int countingHikeValleys(int steps, String path) {
|
||||||
|
int valleysCount = 0;
|
||||||
|
int seaLevel = 0;
|
||||||
|
boolean inValley = false;
|
||||||
|
|
||||||
|
for (char step : path.toCharArray()) {
|
||||||
|
if (Character.toUpperCase(step) == 'U') {
|
||||||
|
seaLevel++;
|
||||||
|
} else if (Character.toUpperCase(step) == 'D') {
|
||||||
|
seaLevel--;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we're below sea level and weren't before, we're entering a valley
|
||||||
|
if (seaLevel < 0 && !inValley) {
|
||||||
|
valleysCount++;
|
||||||
|
inValley = true;
|
||||||
|
}
|
||||||
|
// If we're at or above sea level, we're no longer in a valley
|
||||||
|
if (seaLevel >= 0) {
|
||||||
|
inValley = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return valleysCount;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user