字符串

作者: 周二可 | 来源:发表于2018-04-08 11:30 被阅读10次

1、翻转字符串

Given s = "the sky is blue",
return "blue is sky the".

// 交换数组中两个元素的位置
func swap<T>(_ chars: inout [T], _ p: Int, _ q: Int) {
    (chars[p], chars[q]) = (chars[q], chars[p])
}

// 翻转数组中指定范围的元素
func reverse<T>(_ chars: inout [T], _ start: Int, _ end: Int) {
    var start = start, end = end
    
    // 这个循环里从两头开始交换元素直到start大于end说明替换完成
    while start < end {
        swap(&chars, start, end)
        start += 1
        end -= 1
    }
}

func reverseWords(s: String?) -> String? {
    guard let s = s else {
        return nil
    }
    
    var chars = Array(s), start = 0
    // 1、翻转整个字符串
    reverse(&chars, 0, chars.count - 1)
    
    // 2、每个单词作为一个字符串单独翻转
    for i in 0 ..< chars.count {
        // 遍历字符串,如果当前位置的下一个字符是空格或者当前字符是整个字符串的最后一个字符时可以认为从start位置到当前位置的字符串是一个单独的单词
        if chars[i + 1] == " " || i == chars.count - 1  {
            // 翻转单独的单词
            reverse(&chars, start, i)
            start = i + 2
        }
    }
    
    return String(chars)
}

let str = "the blue is sky"

print(reverseWords(s: str) ?? "")

相关文章

  • Javascript知识点整合

    字符串 单行字符串: ‘字符串’或“字符串” 多行字符串: `多行字符串` 字符串操作: 字符串连接‘+’号 长度...

  • C++基础字符串

    字符串的构造 字符串特性描述 字符操作 字符串赋值 字符串连接 字符串比较 字符串查找 字符串替换 字符串删除 字...

  • iOS中的NSString与NSMutableString

    字符串的创建 字符串读写 字符串的比较 字符串的搜索 字符串截取 字符串替换 字符串与路径 字符串转换 NSMut...

  • iOS NSString用法总结

    字符串属性 字符串截取 字符串比较 字符串搜索 字符串拼接 字符串基本类型转换 字符串分行,分段 字符串列举(按条...

  • php 字符串常见方法汇总

    字符串拼接 字符串检索 字符串截取 字符串替换 字符串大小写转化 字符串转数组 字符串格式化

  • iOS 字符串截取、iOS 字符串替换、iOS 字符串分隔、iO

    iOS之字符串截取、iOS 字符串替换、iOS字符串分隔、iOS之字符串匹配、截取字符串、匹配字符串、分隔字符串 ...

  • PHP中字符串函数库常用函数解析 -- PHP 学习 (十一)

    常用字符串函数分类: 字符串长度, 字符串查找, 字符串大小写转换, 字符串截取, 字符串 ASCII, 字符串加...

  • Kotlin语言(二):字符串类型

    1、字符串定义 2、字符串删除空格 3、字符串比较 4、字符串切割 5、字符串截取 6、字符串替换 7、字符串模板

  • 字符串扩展

    求字符串大小 字符串解码、转换 字符串截取 字符串汉字处理 字符串 Mac地址 字符串进制转换

  • 2020-09-30字符串

    day8-字符串 字符串的操作 in 和 not in字符串1 in 字符串2 - 判断字符串1是否是字符串...

网友评论

    本文标题:字符串

    本文链接:https://www.haomeiwen.com/subject/zswicftx.html