---
# System prepended metadata

title: 'U2.5、 實戰練習: 找次大值'
tags: [Lidemy心得, 2020七月第三週, 進度筆記, ALG 101, 7/15, JavaScript]

---

# U2.5、 實戰練習: 找次大值
###### tags:  `ALG 101` `JavaScript` `2020七月第三週` `進度筆記` `Lidemy心得` `7/15`

---
放兩張牌，最大跟次大:
如果翻出新的牌比最大值大，那也一定比次大值大。
最新的牌就會是最新的牌，而原本最大的牌就變成次大。
所以我翻出來的排比這兩種情形都小就沒事。
如果比次大還大，成為新的次大。

![](https://i.imgur.com/E6kmG3c.png)

---

# U2.6、 實戰練習: 字串轉大寫
###### tags:  `ALG 101` `JavaScript` `2020七月第三週` `進度筆記` `Lidemy心得` `7/15`

ASC II : 把個英文字母編成數字，侷限顯示英語基本 26 個拉丁字母。

任何一個英文字母小寫 -32 = 大寫; 而英文大寫 +32 = 小寫。
![](https://i.imgur.com/qQpMulf.png)

在 Chrome Console 執行，會印出 "A" 。

---

判斷小寫轉大寫:
方法一: 看 ASC II code 有無介於 97~122 。
方法二: 比較大小，比較字典順序，在前面出現的比較小，像是: c>= 'a' && c<= 'z' 。

`ASC code -32 ; String.fromCharCode('a'.charCodeAt(0) - 32) ; 'abc'.charCodeAt(0)` ， 'a' 內可以有很多個字串，像是 'abcd' ，後面的 ( ) 內表示第幾位的數字。

![](https://i.imgur.com/KKRujMK.png)

---

# U2.7、 實戰練習: 刪除特定字元
###### tags:  `ALG 101` `JavaScript` `2020七月第三週` `進度筆記` `Lidemy心得` `7/15`

給定個字串 'hello' ， 然後要刪除 'l' 。
不要想成刪除，想成略過的情形。

---

![](https://i.imgur.com/NFQocOt.png)

1. 假設 str 字串是元素 'hello' 。
2. 讓 l 被消失(略過)。
3. 讓 ans 成為字串 。
4. i 現在是 0 。
5. 我們要判斷 str[0] 即 'hello' 不是我要刪除的 h ，我就把他加到 ans 。
6. 不是。
7. 下一圈迴圈。
8. i 現在是 1 。
9. 判斷 str[1] 有無要刪除 。
10. 如果沒有要刪除 ， 加到 h 後面，變成 he 。
11. 下一圈。
12. i 現為 2 。
13. 「判斷 str[2] 是否略過 ， l 不符合  。
14. 不會加到 ans 後面。
15. 下一圈。
16. i 現在是 3 。
17. 「判斷 str[3] 是否略過 ， l 不符合  。
18. 不會加到 ans 後面。
19. 下一圈。
20. i 現在是 4 。
21. 判斷 str[4] 有無要刪除 
22. 如果沒有要刪除 ， 加到 he 後面，變成 heo 。
23. 下一圈，迴圈現在是 5 ，超出範圍結束。
24. 輸出 ans 。

---

# U2.8、 Project 2
###### tags:  `ALG 101` `JavaScript` `2020七月第三週` `進度筆記` `Lidemy心得` `7/15`

---

## 找次小值
與找次大值類似:

![](https://i.imgur.com/TDPWHin.png)
左邊找次大值，右邊找次小。

    let arr = [10, 8, 6]
    let min = Infinity
    let min2 = Infinity
    for(let i=0; i<arr.length; i++) {
      if (arr[i] < min) {
        min2 = min
        min = arr[i]
      } else if (arr[i] < min2) {
        min2 = arr[i]
      }
    }
    console.log(min, min2)

1. 找次小值的陣列。
2. 把最小值跟次小值初始成一個很小的數值。
3. 把迴圈傳遍整個陣列 ， i 現在是 0 。
4. arr[0] ， 也就是 10 是不是於最小值 ?
5. 是，目前最小值變成次小值 (Infinity) ，而 arr[0] 變成最小。
6. 下一圈迴圈， i 現在是 1 。
7. arr[1] 8 是不是最小值 ?
8. 是，目前最小值變成次小值 (10) ，而 arr[1] 變成最小。
9. 下一圈迴圈， i 現在是 2 。
10. arr[2] 6 是不是最小值 ?
11. 是，目前最小值變成次小值 (8) ，而 arr[2] 變成最小。
12. 下一圈迴圈， i 現在是 3 ， 沒有然後，超出範圍，結束~
13. 印出 min ， min2 。

---

## 大小寫互換
與轉大寫類似:

![](https://i.imgur.com/UMvLaZO.png)
左邊轉大寫，右邊大小寫互換。

    let str = "hELLo"
    let ans = ''
    for(let i=0; i<str.length; i++) {
      let code = str.charCodeAt(i)
      if (code >= 97 && code <= 122) {
        ans += String.fromCharCode(code - 32)
      } else if (code >= 65 && code <= 90) {
        ans += String.fromCharCode(code + 32)
      } else {
        ans += str[i]
      }
    }
    console.log(ans)

---

## 印出因數
跟印出奇數類似:

![](https://i.imgur.com/DZ6m5DC.png)
左邊印出奇數，右印出因數。

    let num = 30
    for(let i=1; i<=num; i++) {
      if (num % i === 0) {
        console.log(i)
      }
    }

---

** 圖片均為上課教材中所擷取供本人學習使用。

---