字符串反转
【字符串反转】1、给出一个字符串,要求将其按照单词顺序进行反转。比如:如果是“the sky is blue”,那么反转后的结果就是"blue is sky the"。
思路:
1)整个字符串进行反转 "the sky is blue" -> "eulb si yks eht"
2)反转单个单词 "eulb si yks eht" -> "blue is sky the"
Swift版本
func reverse(_ chars: inout [T], start: Int, end: Int) {
var start = start
var end = end
while start < end {
swap(&chars, beforeIndex: start, afterIndex: end)
start += 1
end -= 1
}
}func swap(_ chars: inout [T], beforeIndex: Int, afterIndex: Int) {
// 利用元祖进行交换
(chars[beforeIndex], chars[afterIndex]) = (chars[afterIndex], chars[beforeIndex])
}func reverseWords(str: String?) -> String? {
guard let inputString = str else { return nil }
var chars = Array(inputString.characters)
var start = 0
// 1
reverse(&chars, start: start, end: chars.count - 1)for i in 0..
思路2:
以空格为间隔字符将字符串转换为数组,然后将数组进行反序,最后在加入空格字符变成字符串
func reverseString(_ str: String) -> String {
if str.isEmpty { return str }
// 转换为数组
var stringArray = str.components(separatedBy: " ")
// 反转数组
stringArray.reverse()
// 变为字符串
return stringArray.joined(separator: " ")
}
输入:the sky is blue
输出:blue is sky the
推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长