我正在學習使用資源在swift中編寫代碼,在那裏我看到了這個函數可以反轉參數中給出的字符。 下面是代碼:這個功能是如何工作的?
func reverseIt(s: String) -> String {
var rst = ""
for char in s.characters {
rst = "\(char)" + rst
}
return rst
}
我只是想知道它是如何設法扭轉這種局面,因爲我不SE具體的事情在這裏它這是否
我正在學習使用資源在swift中編寫代碼,在那裏我看到了這個函數可以反轉參數中給出的字符。 下面是代碼:這個功能是如何工作的?
func reverseIt(s: String) -> String {
var rst = ""
for char in s.characters {
rst = "\(char)" + rst
}
return rst
}
我只是想知道它是如何設法扭轉這種局面,因爲我不SE具體的事情在這裏它這是否
步驟通過它使用「你好」作爲一個例子你的想法:
第一次,rst
是空的,併成爲"H" + rst
或"H"
(因爲rst
爲空)。
下一次,第2個字符"e"
被拍攝,並rst
成爲"e" + rst
這是"e" + "H"
或"eH"
。你可以看到這是怎麼回事。
Oooohhh ...我現在明白了!非常感謝你的朋友。非常常識的東西,但仍然非常感謝你! –
非常歡迎。是的,常識是你正在尋找的答案;-)應該幫助你爲自己回答很多問題!順便說一句,現在你明白了,其他答案也應該對你有意義。 – Kenney
是的,他們當然可以!再次感謝隊友! –
的功能是很容易跟隨,看到這條線rst = "\(char)" + rst
。
最初是一個空字符串,然後在for
語句的每次迭代中,每個字符(在for
中獲得的變量,然後使用字符串插值)被附加到字符串的開頭。
我希望這對你有所幫助。
但爲什麼不按正確的順序。例如,爲什麼它不以正確的順序打印「你好」,而是從最後開始? –
@ YousufEjazi007如果您想了一會兒,使用堆棧數據結構,從字符串末尾迭代,從頭開始迭代等等,有幾種方法可以反轉字符串。當然,每種方法都有成本(在內存中講話和效率)。在你的問題中使用的方式只是其中的一種,僅此而已。 –
是的,我確實在互聯網上檢查過,甚至有一個關於如何反轉給定字符串的整個百科全書頁面。但我仍然不太明白。你可以再試一次,讓我對它更簡單一點嗎?我將不勝感激。 –
它反轉字符串的原因是由於代碼在賦值(=)運算符右側的順序。如果代碼是這樣的:
rst = rst + "\(char)"
那麼結果將不會顛倒。如果這不能幫助你清理它,那就讓我們一步一步來。使用代碼:
rst = "\(char)" + rst
的每個通的for-in循環,值會像這樣:
first pass - rst would get char ("h") + rst ("") -> "h"
second pass - rst would get char ("e") + rst ("h") -> "eh"
third pass - rst would get char ("l") + rst ("eh") -> "leh"
fourth pass - rst would get char ("l") + rst ("leh") -> "lleh"
fifth pass - rst would get char ("o") + rst ("lehh") -> "olleh"
這是否讓它在你的心中,現在清楚了嗎?
您將從空字符串開始,將字符串中的每個字符添加到空字符串的前面。你寫了它,你不明白什麼? – JAL
在for循環中打印出第一個,然後你會看到。 – usr1234567
我沒有寫,我只是在某處看到它,然後在這裏輸入。 –