1什麼是字串處理
字串(String)就是一串文字——姓名、密碼、一句話。你可能會覺得字串跟清單差很多,但其實字串幾乎可以當作「一個一個字元排成的清單」來操作:你可以問「這個字串有幾個字元」(跟清單問「有幾筆資料」一樣)、可以問「第幾個字元是什麼」(跟清單的索引存取一樣)、可以走訪每一個字元逐一處理(跟清單走訪一樣)。
所以這個單元不是全新的技巧,而是把你在前面單元學過的走訪、計數、比較這些能力,套用在字元上。差別只在於:字元本身除了可以被計數、比較,還可以做「轉換」(例如把字母往後移幾位變成密碼),這是字串處理特有、清單處理比較少見的操作。
H
E
L
L
O
字串 "HELLO" 其實就是 5 個字元排成的清單,長度=5
🆕 補充圖解:字串=字元清單,索引、走訪的規則跟清單完全相同新增
2核心概念,依課程題目的順序拆解
1
字串的長度
你要做的事:輸出一個字串的長度(字元數)。這是操作字串前最基本的資訊,之後很多題目的迴圈次數都會用到「字串長度」這個值。
字串長度(STR01-001)
2
存取指定位置的字元
你要做的事:
- 輸出第一個字元與最後一個字元——字串的位置從1開始算,最後一個字元的位置就是「字串長度」本身
- 輸出第P個字元——概念1(拿到長度)延伸出來的索引存取
- 逐一輸出每一個字元,每個字元各佔一行——用迴圈把「指定位置存取」套用到每一個位置
第一個與最後一個字元(STR01-002)指定位置的字元(STR01-003)逐字元輸出(JSS01-D03)
3
統計字元出現次數——條件計數套用在字元上
你要做的事:計算某個目標字元C在字串中出現幾次。做法完全就是你在M1-03學過的「條件計數」:準備一個計數器,走訪字串的每一個字元,符合(等於目標字元C)就+1。
計算指定字元數量(STR01-004)指定字元出現次數(JSS01-P01)計算字元出現次數(A-11-0)
4
反向輸出——走訪方向反過來
你要做的事:把字串反向輸出。跟M1-03「清單反向加總」是同一招——迴圈從字串最後一個位置往回走到第一個位置。
反向輸出字串(STR01-005)
5
判斷回文——正著讀反著讀是否相同
你要做的事:判斷字串正著讀和反著讀是否相同。做法是拿概念4「反向輸出」的結果,跟原本的字串比較是否完全相同;也可以更直接一點,同時從字串的最前面跟最後面各自往中間走,一路比較對應的字元是否相同。
L
E
V
E
L
"LEVEL":從左右兩端同時往中間逼近比較,逐一相同就是回文
🆕 補充圖解:兩個指標從頭尾出發,往中間走並逐一比對新增
是否回文(STR01-007)
6
母音數量——多字元條件的計數
你要做的事:計算母音a、e、i、o、u共出現幾次。跟概念3幾乎一樣,差別只是「符合條件」從「等於一個特定字元」變成「等於a、e、i、o、u其中之一」。
母音數量(STR01-006)
7
相鄰字元比較
你要做的事:判斷字串中是否存在兩個相鄰且相同的字元。跟M1-03「相鄰變化統計」是同一個套路:走訪時記住「上一個字元」,跟「這一個字元」比較。
相鄰相同字元(STR01-008)
8
格式檢查——用長度做條件判斷
你要做的事:若字串長度為4,輸出OK;否則輸出NG。這一題結合概念1(拿到長度)跟你在M0-03學過的條件判斷,是字串處理裡最簡單的「驗證資料格式」的雛形。
簡易格式檢查(JSS01-P02)
9
字元轉換——不只是讀取,還要「變成別的字元」
你要做的事:設計一種簡單的密碼規則,將每個字母向後移動固定的位數(例如z會繞回b)。這是字串處理特有的新技巧:走訪每一個字元時,不是統計或比較,而是把它轉換成另一個字元再輸出——通常會用到字元跟數字之間的對應關係,計算位移後的新字元。
Y
(第25個字母)
(第25個字母)
+2 位移
A
(繞回第1個字母)
(繞回第1個字母)
🆕 補充圖解:位移超過字母表尾端 Z 時,要「繞回」開頭 A新增
簡易密碼轉換(A-12-0)動態密碼轉換(A-12-1)
⚠️ 常見誤區
位移到字母表尾端時忘記「繞回開頭」(z往後移2位不是變成不存在的字母,而是繞回b)——這一類轉換題目的邊界情況,一定要動手驗證「移到最後幾個字母」的情況。10
進位轉換——字元跟數字系統的結合
「5進位解碼」(cycjunior-002)把字串處理跟數學的進位系統結合在一起,是概念9「字元轉換」的延伸應用——建議先確定自己熟悉概念9的位移邏輯,再挑戰這一題。
11
找出現最多次的字元——結合統計與找最大值
你要做的事:統計字串中每個字母各出現幾次,找出出現最多次的次數。做法是概念3(統計字元出現次數)套用在每一種可能的字母上(總共26種),再從這26個統計結果中,用你在M0-04學過的「找最大值」技巧找出最多的那個。
計算字元出現最多次數(A-11-1)
12
更多綜合應用(可依需要挑戰)
M1-06還有幾題結合了字串處理跟其他情境:「多科成績計算」「加權成績計算」「檢查碼」「數位顯示器」。這些題目沒有全新的核心概念,是前面概念的實戰演練,建議前面的概念都熟悉後再挑戰。
3建議練習順序對照表
| 順序 | 概念 | 題目 | 課程 |
|---|---|---|---|
| 1 | 字串長度 | 字串長度(STR01-001) | M1-05 |
| 2 | 指定位置存取 | 第一個與最後一個字元/指定位置的字元/逐字元輸出 | M1-05、M1-06 |
| 3 | 字元計數 | 計算指定字元數量/指定字元出現次數 | M1-05、M1-06 |
| 4 | 反向輸出 | 反向輸出字串(STR01-005) | M1-05 |
| 5 | 判斷回文 | 是否回文(STR01-007) | M1-05 |
| 6 | 多字元條件計數 | 母音數量(STR01-006) | M1-05 |
| 7 | 相鄰比較 | 相鄰相同字元(STR01-008) | M1-05 |
| 8 | 格式檢查 | 簡易格式檢查(JSS01-P02) | M1-06 |
| 9 | 字元轉換 | 簡易密碼轉換/動態密碼轉換 | M1-06 |
| 10 | 進位轉換 | 5進位解碼 | M1-06 |
| 11 | 找最多次的字元 | 計算字元出現最多次數(A-11-1) | M1-06 |
| 12 | 綜合應用 | 多科成績計算/加權成績計算/檢查碼/數位顯示器 | M1-06 |
🆕 本頁新增內容說明
以下視覺元素為 Cowork 潤飾時新增,MD 正本中沒有:① 字串=字元清單概念圖解 ② 回文雙指標比對圖 ③ 字元位移繞回圖。若確認保留,建議之後補進 MD 正本。