iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0

當然只介紹資料結構是不夠的,網路上資料到處都是,而本系列要融入 SwiftUI 去呈現這些知識,這次的概念會利用到 TextFieldTextState 去顯示。

反轉字串

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,讓我們繼續學習下去吧。


上一篇
Day 12: 導讀 LeetCode 知識 - 陣列與字串(Swift)
下一篇
Day 14: 導讀 LeetCode 知識 - Two Pointers (Swift)
系列文
用 SwiftUI 魔法變出 Leetcode 刷題知識學習 App!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言