Problem 1:字串問題
子題 1:計算字數。 (程式執行限制時間: 2 秒) 9 分
做網路廣告的時候,有些廣告的文案都有規定字數不能超過多少,如果想要知道每列測試資
料(每組測試資料)有多少英文字,字和字之間用一個或多個空白隔開。”, ;! .” 這四個符號
會與英文字相鄰。寫一程式計算每列字數。
解法:
以空格為切割點,計算共有幾個字,並且刪除標點符號。
子題 2:摩斯電碼。(程式執行限制時間: 2 秒) 11 分
摩斯電碼是一種在電報通訊的時代傳送文字訊息的方式,透過不同的排列順序來表達不同的
英文字母、數字和標點符號。是由美國人薩繆爾·摩斯在1836 年發明。有兩種「符號」用來
表示字元:點(.)(ASC 碼0X2E)和劃(-)(ASC 碼0X2D),或叫「滴」(Dit)和「答」(Dah)。
數字對應的摩斯電碼如下:
0 ----- (Dah-Dah-Dah-Dah-Dah)
1 .---- (Dit-Dah-Dah-Dah-Dah)
2 ..--- (Dit-Dit-Dah-Dah-Dah)
3 ...-- (Dit-Dit-Dit-Dah-Dah)
4 ....- (Dit-Dit-Dit-Dit-Dah)
5 ..... (Dit-Dit-Dit-Dit-Dit)
6 -.... (Dah-Dit-Dit-Dit-Dit)
7 --... (Dah-Dah-Dit-Dit-Dit)
8 ---.. (Dah-Dah-Dah-Dit-Dit)
9 ----. (Dah-Dah-Dah-Dah-Dit)
解法:
子題 1:計算字數。 (程式執行限制時間: 2 秒) 9 分
做網路廣告的時候,有些廣告的文案都有規定字數不能超過多少,如果想要知道每列測試資
料(每組測試資料)有多少英文字,字和字之間用一個或多個空白隔開。”, ;! .” 這四個符號
會與英文字相鄰。寫一程式計算每列字數。
解法:
Dim Sep() As String = {" ", ",", "!", ".", ";"}
SR.ReadLine().Split(Sep, StringSplitOptions.RemoveEmptyEntries)
以空格為切割點,計算共有幾個字,並且刪除標點符號。
子題 2:摩斯電碼。(程式執行限制時間: 2 秒) 11 分
摩斯電碼是一種在電報通訊的時代傳送文字訊息的方式,透過不同的排列順序來表達不同的
英文字母、數字和標點符號。是由美國人薩繆爾·摩斯在1836 年發明。有兩種「符號」用來
表示字元:點(.)(ASC 碼0X2E)和劃(-)(ASC 碼0X2D),或叫「滴」(Dit)和「答」(Dah)。
數字對應的摩斯電碼如下:
0 ----- (Dah-Dah-Dah-Dah-Dah)
1 .---- (Dit-Dah-Dah-Dah-Dah)
2 ..--- (Dit-Dit-Dah-Dah-Dah)
3 ...-- (Dit-Dit-Dit-Dah-Dah)
4 ....- (Dit-Dit-Dit-Dit-Dah)
5 ..... (Dit-Dit-Dit-Dit-Dit)
6 -.... (Dah-Dit-Dit-Dit-Dit)
7 --... (Dah-Dah-Dit-Dit-Dit)
8 ---.. (Dah-Dah-Dah-Dit-Dit)
9 ----. (Dah-Dah-Dah-Dah-Dit)
解法:
'使用StartsWith(String s) 回傳true/false 注意大小寫 延伸:EndsWith(String s)
'使用Substring (startIndex As Integer, length As Integer) As String
For i = 0 To 1 'in1 & in2
SR = Reader(i)
Dim n As Integer = Val(SR.ReadLine())
For j = 1 To n 'input 幾行
Dim temp As String = SR.ReadLine()
Do Until temp = "" '直到字串沒有摩斯密碼
For k = 0 To 9 '判斷密碼
If temp.StartsWith(code(k)) = True Then
temp = temp.Substring(code(k).Length).Trim()
SW.Write(k)
End If
Next
Loop
SW.WriteLine()
Next
If SR.ReadLine() = 0 Then
SW.WriteLine()
End If
SR.Close()
Next
留言
張貼留言