題目
Counting Valleys
舉例輸入
8
UDDDUDUU
舉例輸出
1
舉例輸入
12
DDUUDDUDUUUD
舉例輸出
2
解析
這題英文寫的很複雜
其實很簡單,他要問的並不是上山下谷幾次
而是很單純的要計算出你從山谷回來幾次
何謂山谷?再你起點之下所走的路
既然如此那我們只要計算進入山谷之後的事情即可
經過以上我們知道需要三個變數
搞定了之後就開寫囉
function countingValleys(n, s) {
let inValley = false;
let result = 0;
let seaLevel = 0;
//HackerRank有時候傳字串有時候陣列
s = Array.isArray(s) ? s : s.split('');
//把資訊數字化
let stepNum = s.map(steps => ((steps === "U") ? 1 : -1))
//開始爬山囉
stepNum.forEach(step => {
//往前走一步
seaLevel += step;
//往前走一部後發現自己進入山谷
if (seaLevel < 0 && !inValley) {
inValley = true;
}
//往前走一步後發現自己從山谷離開
if (seaLevel == 0 && inValley) {
result++;
inValley = false;
}
});
return result;
}