當然只介紹資料結構是不夠的,網路上資料到處都是,而本系列要融入 SwiftUI 去呈現這些知識,這次的概念會利用到 TextField
、Text
跟 State
去顯示。
LeetCode 的 344. Reverse String 是經典反轉字串題,我們輸入一段字串,讓反轉字串的方法去幫我們做反轉的動作,最後由畫面回覆我們反轉後的結果。
struct ContentView: View {
@State private var inputString = ""
@State private var reversedString = ""
func reverseString() {
reversedString = String(inputString.reversed())
}
var body: some View {
VStack {
TextField("輸入字串", text: $inputString)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
Button(action: {
self.reverseString()
}) {
Text("反轉字串")
}
.padding()
Text("反轉後的字串:\(reversedString)")
.padding()
}
.padding()
}
}
透過輸入框輸入我們要的字串,按了反轉字串的按鈕,我們會在結果 Text 那邊看到反轉後的結果。
而這個是比較偷懶的做法,直接調用現成的方法反轉。
func reverseString() {
reversedString = String(inputString.reversed())
}
LeetCode 主要是看你寫邏輯的思路,所以為了展現思考方式改一下寫法。這邊的概念是會用左右指針去指出頭尾的位置,一個一個調換達成反轉的效果。
func reverseString() {
var characters = Array(inputString)
var left = 0
var right = characters.count - 1
while left < right {
let temp = characters[left]
characters[left] = characters[right]
characters[right] = temp
left += 1
right -= 1
}
reversedString = String(characters)
}
我們學會了解開 LeetCode 字串與陣列的題目並且能夠顯示於 SwiftUI,這是一個很特別的學習路程,接下來會陸續介紹常見的 LeetCode 題目以及結合 SwiftUI 組成一個知識 App,讓我們繼續學習下去吧。