#作業練習【ChaoCode】 Swift 基礎篇 17:Protocol & Generic 作業
題目來自於 : ChaoCode 頻道
- 為什麼 .isEmpty 會比 .count == 0 好?
.isEmpty 一定是一次比對就完成.count 可能還要 forLoop 慢慢數完
2. Sequence、Collection、BidirectionalCollection、RandomAccessCollection,他們的特性是什麼?
Sequence - 會呼叫下一個Collection - 透過 index 存取BidirectionalCollection - 可以雙向 LoopRandomAccessCollection - 可以透過 index ± Int 來獲取 其他可用的 index
3. Set<String> 和 Set<Int> 都是 Set,表示他們是同一種類型嗎?
< > 內的類型不一樣,所以不一樣
Notes:
Protocol 整理
Collection 相關 Protocol -
Generic - 泛型
String 的 Index 操作 -
let sentence = "野原新之助"print(sentence.first!)
// 輸出結果 -> 野print(sentence[sentence.startIndex])
// 輸出結果 -> 野print(sentence.last!)
// 輸出結果 -> 助print(sentence[sentence.index(after: sentence.startIndex)])
// .startIndex (的後一個)
// 輸出結果 -> 原print(sentence[sentence.index(before: sentence.endIndex)])
// .endIndex (的前一個)
// 輸出結果 -> 助print(sentence[sentence.index(sentence.startIndex, offsetBy: 3)])
// 輸出結果 -> 之print(sentence[sentence.index(sentence.startIndex,
offsetBy: 5,
limitedBy: sentence.index(before: sentence.endIndex)) ?? sentence.startIndex])
// 輸出結果 -> 野 (下面附註圖1)// Error:print(sentence[sentence.endIndex])
print(sentence[sentence.endIndex - 1])
實作:
第一題:
第二題:
想法:
先取得 文字數量 -> 利用ForLoop 搭配 stringIndex 檢查頭尾的字
( 偏移量可以為負數) 、 (要注意 尾的寫法 endIndex 位置 )
因為預設為true 所以不一樣才做更動(不一樣就回傳 false)
----------------------
檢查 應該可以檢查一半就好(要考慮 奇、偶數)
執行次數可以減少 不過Code可能會變長