iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
0
Software Development

用JS來刷刷HackerRank系列 第 16

(17)HackerRank-Interview -Warm-up Challenges-Counting Valleys(javaScript ans)

  • 分享至 

  • xImage
  •  

題目
Counting Valleys
舉例輸入

8
UDDDUDUU

舉例輸出

1


舉例輸入

12
DDUUDDUDUUUD

舉例輸出

2

解析
這題英文寫的很複雜
其實很簡單,他要問的並不是上山下谷幾次
而是很單純的要計算出你從山谷回來幾次

何謂山谷?再你起點之下所走的路
既然如此那我們只要計算進入山谷之後的事情即可

經過以上我們知道需要三個變數

  1. 我是否再山谷?
  2. 我離開山谷幾次?
  3. 我在平面之上走還是之下?

搞定了之後就開寫囉

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;
}
 

上一篇
(16)HackerRank-Interview -Warm-up Challenges-Sock Merchant(javaScript ans))
下一篇
(18)HackerRank-Interview -Warm-up Challenges-Jumping on the Clouds(javaScript ans))
系列文
用JS來刷刷HackerRank29
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言