當然只介紹資料結構是不夠的,網路上資料到處都是,而本系列要融入 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,讓我們繼續學習下去吧。